属性或获取/设置方法对对象大小的影响

2024-01-06

就对象大小而言,如果公开的属性不表示状态而只是将其 getter 和 setter 调用委托给另一个实体,则属性(而不是 Get/Set 方法)如何影响对象大小?

例如,考虑以下类:

public class Person
{
   Address _address = new Address();

   public string AddressName
   {
      get{ return _address.Name; }
      set { _address.Name = value; }
   }

   public string GetAddressName(){ return _address.Name; }
   public void SetAddressName(string name){ _address.Name = name; }

}

public Address
{
    public string Name { get; set; }
}

我猜测当创建一个新的 Person 时,CLR 在确定要分配多少内存时会考虑 AddressName 属性的潜在大小。但是,如果我公开的只是 Get/Set AddressName 方法,则不会分配额外的内存来满足 AddressName 属性的需要。因此,为了节省内存占用,在这种情况下最好使用 Get/Set 方法。但是,这不会对 Address 类的 Name 属性产生影响,因为状态会被保留。这个假设正确吗?


的大小个体对象不受属性、方法、事件等数量的影响。它影响类型元数据和 JIT 代码的大小 - 但不影响每个对象的大小。那是only受实例字段影响。

我猜测当创建一个新的 Person 时,CLR 在确定要分配多少内存时会考虑 AddressName 属性的潜在大小。

No. It only看看你的领域。您有一个字段(_address)这样加上正常的对象开销就是单个实例所需的所有内存。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

属性或获取/设置方法对对象大小的影响 的相关文章

随机推荐