运营商在哪里定义(在C#中)?

时间:2010-09-24 13:02:07

标签: c# compiler-construction operators

只是想知道C#中的运算符规则实际定义在哪里。

E.g。我在哪里可以看到代码说= =检查两个对象的引用?

我可以看到运营商在例如String类,但现在我有兴趣看到'基础'的情况。它只是编译器明确知道如何处理的东西,因此没有我们可以使用Reflector等工具查看的代码。

2 个答案:

答案 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