在浏览.NET Reference源代码时,我发现了以下代码,从https://referencesource.microsoft.com/#mscorlib/system/delegate.cs,196复制。
public static Delegate Combine(Delegate a, Delegate b)
{
if ((Object)a == null) // cast to object for a more efficient test
return b;
return a.CombineImpl(b);
}
注意投射到(Object)
,这很奇怪。这样做的原因我假设不是使用==
操作符覆盖Delegate
而是来自Object
的操作符。但是,在浏览Object
的代码时,我找不到==
的定义。
问题是:
==
上的{p> Object
,它在哪里定义,它的行为是什么?
答案 0 :(得分:1)
来自docs:
对于字符串以外的引用类型,==
如果其两个操作数引用同一个对象,则返回true
。
// Reference equality: different objects,
// same boxed value: False.
object s = 1;
object t = 1;
Console.WriteLine(s == t);