只是想知道C#中的运算符规则实际定义在哪里。
E.g。我在哪里可以看到代码说= =检查两个对象的引用?
我可以看到运营商在例如String类,但现在我有兴趣看到'基础'的情况。它只是编译器明确知道如何处理的东西,因此没有我们可以使用Reflector等工具查看的代码。
答案 0 :(得分:9)
您无法在代码中看到它({em>可能在SSCLI中,我还没有检查过。)
您需要查看C# language specification。例如:
7.10.6参考类型相等运算符
预定义的引用类型相等 运营商是:
bool operator ==(object x, object y); bool operator !=(object x, object y);
运算符返回结果 比较两个参考文献 平等或不平等。
由于预定义的引用类型 平等操作符接受操作数 键入
object
,它们适用于所有类型 没有声明适用的 运算符==
和运算符!=
成员。相反,任何适用的 用户定义的相等运算符 有效隐藏预定义 引用类型相等运算符。
答案 1 :(得分:6)
==
运算符会向下调用ceq
IL instruction。