这可能是个愚蠢的问题,但是对象属性是否每个实例都占用任何内存?
据我所知,当您实例化一个对象时,每个值字段占用其大小,引用字段类型每个字段占用 4 个字节。但是假设你有一个具有 1000 个属性的对象,它通过其他对象获取数据,这些属性本身是否占用任何内存?
自动属性自然会这样做,因为它只是语法糖,但它看起来不像普通属性应该......
最佳答案
在这方面,属性就像普通方法一样。
代码需要存储在某个地方(每个类型一次)并且使用的任何字段(自动属性!)需要每个实例存储。局部变量也会占用一些内存。
一些例子:
private int myProperty;
public int MyProperty { get => myProperty; set => myProperty; }
属性本身不占用实例内存,但 myProperty
当然会。
public int MyProperty { get; set; }
我没有定义任何支持字段,但编译器为我做了 - 所以生成的支持字段仍然占用实例内存。
public int Count => somelist.Count;
这里没有额外的支持字段,所以这不需要任何额外的实例内存(当然 someList
除外)。
关于c# - 属性是否会增加实例的内存大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4223589/