c# - 属性是否会增加实例的内存大小?

标签 c# memory-management

这可能是个愚蠢的问题,但是对象属性是否每个实例都占用任何内存?

据我所知,当您实例化一个对象时,每个值字段占用其大小,引用字段类型每个字段占用 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/

相关文章:

c# - MVC 函数返回但在发送结果之前等待异步函数

c - 灵活数组成员的非静态初始化

c++ - 使用 itoa() 的最佳实践是什么

c - for循环中的malloc

c# - 将重复应用于代码隐藏的约会(DevExpress Scheduler Control)

c# - ASP.Net 中的 Cookie

c# - Unity - 如何以 45 度步长发射粒子?

c# - 调用方法的快捷方式

c++ - 删除指针是什么意思?

c - 什么决定了顺序变量保存在内存中?