我的一个朋友在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终止!)
答案 0 :(得分:0)
显然是这样,至少根据接受的答案。
(在我有一定数量的代表之前我不能发表评论。很多。)
答案 1 :(得分:0)
你打败了我Shoaib。当你的答案被公布时,我也试图在我的第一个回答的问题中滑倒。 :)
听起来缺少的是对“对象”的强制转换,它会强制编译器使用Object中的Equals方法,这会阻止无限循环。