gpt4 book ai didi

c# - 用户定义的结构不继承重载的 == 运算符吗?

转载 作者:行者123 更新时间:2023-11-30 19:32:05 25 4
gpt4 key购买 nike

如果引用类型不重载相等运算符 ==,则将使用 Object 上的内置相等运算符。为什么用户定义的 structs 不一样:

struct A{ }

static void Main(string[] args)
{
A a = new A();
A a1 = new A();
bool equal= (a == a1); //error
}

即,ValueType(所有 structs 派生)是否也重载了 == 运算符?

最佳答案

这样的默认 == 运算符将如何工作?对于引用类型,比较地址是合理的,但由于该检查对于两个 ValueType 永远不会为真(因为如果两个 ValueType 在范围内,那么它们保证在堆栈上具有不同的位置,)地址比较是没有意义的。

正如编译器指出的那样,ValueType 非常有意没有默认的 == 运算符。

关于c# - 用户定义的结构不继承重载的 == 运算符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5983395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com