本文旨在驗證一個容易混淆的概念,從而為玩轉WPF/Silverlight中INotifyProperty做鋪墊。
兩個相同類型的變量a和b,並且有如下關系:
b = a;如果a發生改變,b是否也發生改變呢?
情況很復雜,分以下幾種情況談論:
1) 單個實體
1. 簡單類型
先考察int:
int a = 1;輸出結果:
再考察一下string:
string a = "1";輸出結果:
如果不放心,還可以測試一下Enum,結果類似,詳見Demo。
結論:簡單類型是組成復合類型的最基本單位,是原子,不可再拆分,所以不管是值類型double、int還是引用類型string,b都不隨a的改變而改變,因為它們指向全局堆棧(對於string而言是托管堆)上的同一個地址。
2. 復合類型
復合類型是由string、int、double這些簡單類型組成的。
分別定義一個復合的引用類型(class)和一個復合的值類型(struct)。
class UserInfo
先討論引用類型: