假設我有一些String
s。MS C#實現字符串首先檢查不可變基字符串的ReferenceEquals?
String a = "this String";
Strinb b = "this String";
String c = a;
我的理解串a
和b
不nescessarily共享相同的immuteable基本字符串。但字符串c
是a
的副本,所以它在內部指向相同的不可變串。
如果我比較a
和b
的等式,它將返回true。至少因爲它們表示相同的字符序列。
如果我比較a
和c
的等式,它將返回true。它是否檢查要這樣做的字符還是比較指向不可變串的指針?
編輯:
要回答我怎麼會檢查平等:
private void StackoverflowEquals()
{
String a = @"http://stackoverflow.com/questions/25932695/does-ms-c-sharp-implementation-of-string-check-referenceequals-of-the-immuteable";
String b = @"http://stackoverflow.com/questions/25932695/does-ms-c-sharp-implementation-of-string-check-referenceequals-of-the-immuteable";
String c = a;
if (!(a == b)) throw new Exception();
if (!(a == c)) throw new Exception();
}
你是如何檢查他們的平等? – 2014-09-19 11:18:57
當然,[它的第一件事](http://referencesource.microsoft.com/#mscorlib/system/string.cs#603)。接下來檢查長度相等,這也很便宜。 – 2014-09-19 11:29:12