结构相等如何使用Int32

本文关键字:何使用 Int32 结构 | 更新日期: 2023-09-27 18:26:50

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

 bool y = 6 == 5;

结构相等如何使用Int32

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

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

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

对不起,我认为你有缺陷的前提显示:-)来自文档:

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

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

为了增加SLaks的答案,比较int32是许多类经常做的事情,如果不以自定义的方式实现它,将是一个巨大的性能问题。这个专用的IL指令实际上会编译成一条执行此操作速度极快的机器指令。

这与java必须对其原始类型进行的权衡是一样的。使用OO语言时,您总是会遇到"Purity"的问题,因为您没有int32,有一个"Integer"对象,或者您允许基元类型,接受复杂性并受益于它们可以添加的速度。