Does having lots of methods on a class increase the overhead of that class's object?

后端 未结 2 356
轻奢々
轻奢々 2021-01-04 03:33

Imagine I am using a class to bring back items from a database, say

class BankRecord {

public int id;
public int balance;

public void GetOverdraft() {
...
         


        
相关标签:
2条回答
  • 2021-01-04 03:55

    The runtime does not duplicate the code when creating an instance of a object. Only the member fields are allocated space in memory when an instance is created. For this reason, you shouldn't be creating "data-only" classes unless you have some other design reason for doing so.

    That being said, there are other best-practices reasons why you might not want a class with a multitude of methods (e.g. the God object anti-pattern).

    0 讨论(0)
  • 2021-01-04 03:57

    No. In the CLR objects have a pointer to that type's meta information which includes everything necessary for reflection and the method table. The overhead for looking up a method implementation in the method table is the same regardless of the number of entries in the table. See this article for more information. In a nutshell all objects have 8 bytes of overhead (4 for the type handle and 4 for the syncblock).

    However, what might be slower is reflection. It only makes since that if you want to enumerate through a type's metadata then it will be slower if there are more members declared in that type.

    0 讨论(0)
提交回复
热议问题