为什么我们可以在 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 值类型都不需要,它“可以正常工作”。
相等运算符(==)是一个引用类型,我们都知道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 值类型都不需要,它“可以正常工作”。