在C#中類型分為值類型和引用類型,引用類型和值類型都繼承自System.Object類,幾乎所有的引用類型都直接從System.Object繼承,而值類型具體一點(diǎn)則繼承System.Object的子類,即繼承System.ValueType。而String類型卻有點(diǎn)特別,雖然它屬于引用類型,但是他的一些特性卻有點(diǎn)類似值類型。
關(guān)于C# String
1、不變性
我們先來看看一個(gè)例子:
static void Main(string[] args){ string str1 = "string"; string str2 = str1; Console.WriteLine(object.ReferenceEquals(str1, str2)); str2 += "change"; Console.WriteLine(object.ReferenceEquals(str1, str2)); Console.ReadKey(); }
輸出結(jié)果是True、False。為什么呢?我們來看看IL。
.entrypoint // 代碼大小 48 (0x30) .maxstack 2 .locals init ([0] string str1, [1] string str2) IL_0000: nop IL_0001: ldstr "string" IL_0006: stloc.0 &