我们知道,对象(在当前例子中为字符串)是相对于它们在堆中的引用进行比较的。所以,如果:
string a = "something";
string b = "something";
bool isEqual = (a == b);
将a的值放入字符串池中,并在搜索池时发现b的值与a相同,那么将为变量b分配相同的引用。好的,这很清楚。但是如果发生以下情况会怎样:
string a = "somethingNew";
bool isEqual = (a == "somethingNew");
这样的比较文字在内存中如何表示(如果有的话),整个比较过程是如何进行的?
string.Copy
,然后它将退回比较每个字符,就像你所说的那样。 - King Kingstring.Copy
实际上做了除了返回this
之外的事情。与之形成对比的是Clone()
(它是return this;
)。有趣! - Marc Gravell