结构相同如何与Int32一起使用?

时间:2012-03-04 05:57:00

标签: c# .net

当Int32没有实现相等运算符时,它是如何工作的?

 bool y = 6 == 5;

3 个答案:

答案 0 :(得分:6)

原始数字类型的==运算符是语言规范的一部分,而不是框架类型 它编译为专用的IL指令(ceq),而不是方法调用。

所有其他原始运算符也是如此,包括算术运算,比较运算和转换运算。

答案 1 :(得分:2)

  

当Int32没有实现相等运算符时,它是如何工作的?

对不起,我认为你有缺陷的前提是:-)来自docs

  

Int32类型支持标准数学运算,例如加法,减法,除法,乘法,减法,否定和一元否定。与其他整数类型一样,Int32类型也支持按位AND,OR,XOR,左移和右移运算符。

     

您可以使用标准数字运算符来比较两个Int32值,也可以调用CompareTo或Equals方法。

答案 2 :(得分:0)

只是要添加到SLaks的答案,比较int32是这么多类经常完成的事情,这将是一个巨大的性能问题,不能以自定义的方式实现。这个专用的IL指令实际上会编译成一台执行此操作的机器指令。

它与java必须用它的原始类型进行相同的权衡。使用OO语言,你总是有“纯度”的问题,你没有int32,你有一个“整数”对象,或者你允许原始类型,接受复杂性并从它们可以添加的速度中受益。