我注意到,例如,行为与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
到底哪里等于b
和s2
等于a
.
那意味着它List<T>
实际上是指针对吗?
List<T>
一个引用类型,所以是它的行为就像一个指针.
String
也是一种引用类型,但字符串是不可变的,它们的行为类似于值类型(与引用类型形成对比),因此在某些情况下会引起混淆.
有一个很好的解释为什么字符串在这里工作:在C#中,为什么String是一个行为类似于值类型的引用类型?