4

我的一个朋友在 String.cs 中偶然发现了这两个方法的有趣源代码:

[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
public static bool operator ==(string a, string b)
{
    return Equals(a, b); 
}

[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
public static bool Equals(string a, string b)
{
    return ((a == b) || (((a != null) && (b != null)) && EqualsHelper(a, b)));
}

为什么它不会导致无限循环?(我们所有的程序都将被 StackOverflowException 终止!)

4

2 回答 2

0

显然是这样,至少根据接受的答案。

(在我有一定数量的代表之前,我不能发表评论。万岁。)

于 2012-06-07T03:39:06.277 回答
0

你打败了我Shoaib。当您发布您的答案时,我也试图加入我的第一个回答问题。:)

听起来缺少的是对“对象”的强制转换,这将强制编译器使用 Object 的 Equals 方法,并防止无限循环。

于 2012-06-07T03:44:32.277 回答