在深入学习C#时,我遇到了一个小问题,涉及到对象引用相等性。
假设我有两个字符串:
String a = "Hello world!";
String b = "Bonjour le monde";
bool equals = ReferenceEquals(a, b); // ******************* (1)
b = "Hello world!";
equals = ReferenceEquals(a, b); // ******************* (2)
(1)
是 false
,这是预期结果。
文档中说明了 ReferenceEquals 比较的是实例。
但是:
- 为什么 (2) 返回
true
? - 字符串
a
和b
不是同一个对象吗?如果是,那么它们怎么变成相同的了,因为我从来没有明确地执行过a=b
?