为什么我们可以在 C# 中对值类型(如 int)应用 ==(相等运算符)?

Why we can apply == (Equality Operator) on value type(like int) in C#?

相等运算符(==)是一个引用类型,我们都知道Int32是一个结构,这意味着它是一个值类型。我还检查了 Int32 的内部,但找不到任何与相等运算符 (==) 相关的 Operator Overloading

所以,我的问题是为什么我们可以在 Int32 上应用 ==

我也检查了小数类型,我注意到它有一些Operator Overloading,所以我们自然可以在小数类型上使用==

根据 the equality operators documentation for value types:

Operands of the built-in value types are equal if their values are equal

此外,请注意

User-defined struct types don't support the == operator by default. To support the == operator, a user-defined struct must overload it.

所以,简而言之,所有 user-defined 结构都必须定义相等运算符来重载它。但是所有 built-in 值类型都不需要,它“可以正常工作”。