在物體的大小而言,如何屬性,而不是get/set方法影響對象的大小,如果公開的屬性並不代表一種狀態,而是直接委託其getter和setter調用另一個實體?效應還是得到對象的大小/ 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; }
}
我猜測,創建一個新的人的時候,CLR將確定多少內存分配時考慮到AddressName財產的潛在規模。但是,如果我公開的所有內容都是Get/Set AddressName方法,則不會爲分配AddressName屬性而分配額外內存。因此,爲了節省內存佔用,在這種情況下最好使用Get/Set方法。但是,在狀態被保留時,這不會影響Address類的Name屬性。這個假設是否正確?
'當創建一個新Person時,CLR會考慮AddressName的潛在大小,它不會分配足夠的空間來存儲對字符串的引用。 – 2013-02-22 13:48:43
這是不是出於好奇?如果這是爲了實踐,我不會擔心生成的IL的大小上的夫婦差異(如果有任何差異的話)。 – hometoast 2013-02-22 13:49:45
@IlyaIvanov,這是好奇心,但我也試圖在這個項目中考慮一些性能方面的問題。 – 2013-02-22 13:51:43