当Int32没有实现相等运算符时,它是如何工作的?
bool y = 6 == 5;
答案 0 :(得分:6)
原始数字类型的==
运算符是语言规范的一部分,而不是框架类型
它编译为专用的IL指令(ceq
),而不是方法调用。
所有其他原始运算符也是如此,包括算术运算,比较运算和转换运算。
答案 1 :(得分:2)
当Int32没有实现相等运算符时,它是如何工作的?
对不起,我认为你有缺陷的前提是:-)来自docs:
Int32类型支持标准数学运算,例如加法,减法,除法,乘法,减法,否定和一元否定。与其他整数类型一样,Int32类型也支持按位AND,OR,XOR,左移和右移运算符。
您可以使用标准数字运算符来比较两个Int32值,也可以调用CompareTo或Equals方法。
答案 2 :(得分:0)
只是要添加到SLaks的答案,比较int32是这么多类经常完成的事情,这将是一个巨大的性能问题,不能以自定义的方式实现。这个专用的IL指令实际上会编译成一台执行此操作的机器指令。
它与java必须用它的原始类型进行相同的权衡。使用OO语言,你总是有“纯度”的问题,你没有int32,你有一个“整数”对象,或者你允许原始类型,接受复杂性并从它们可以添加的速度中受益。