String是一种引用类型,即使它具有值类型的大多数特性,例如是不可变的并且具有==重载以比较文本而不是确保它们引用相同的对象.
为什么字符串不是一个值类型呢?
我想知道何时以及为什么引用在C#中被破坏了?
以下代码示例突出显示了此:
StringBuilder a = null, b = null;
a = new StringBuilder("a");
b = a;
b.Append("b");
b = null;
Console.WriteLine(a != null? a.ToString() : "null");
Console.WriteLine(b != null ? b.ToString() : "null");
//Output:
ab
null
Run Code Online (Sandbox Code Playgroud)
为什么,在这个例子中,是b的参考a不会导致a要null呢?
我理解(不完全是为什么)原始类型的实例(如int,float)存储在堆栈中而不是堆分配的.但我对如何存储和访问基元类型的数组感到困惑.我有这个问题,因为System.Array是一个引用类型.引用类型是堆分配的.
int[] integers = {1,2,3,4,5};
Run Code Online (Sandbox Code Playgroud)
如何在内存中存储和访问这些单个整数?