List <T>是指针吗?

Oti*_*iel 9 c# pointers list

我注意到,例如,行为与List<T>其他简单对象不同String.这个问题看起来似乎是新手,但这真的让我感到震惊,因为我认为这List<T>是简单的对象.

以下面的代码为例:

List<String> ls1 = new List<String>();
ls1.Add("a");
List<String> ls2 = ls1;
ls1.Add("b");
Run Code Online (Sandbox Code Playgroud)

最后,ls1将等于,将{"a", "b"}如此ls2.这与此代码的行为完全不同:

String s1 = "a";
String s2 = s1;
s1 = "b";
Run Code Online (Sandbox Code Playgroud)

s1到底哪里等于bs2等于a.

那意味着它List<T>实际上是指针对吗?

Mik*_*ney 7

List<T>一个引用类型,所以是它的行为就像一个指针.

String也是一种引用类型,但字符串是不可变的,它们的行为类似于值类型(与引用类型形成对比),因此在某些情况下会引起混淆.

有一个很好的解释为什么字符串在这里工作:在C#中,为什么String是一个行为类似于值类型的引用类型?