gpt4 book ai didi

c# - 对象相等在 .NET 中的行为不同

转载 作者:太空狗 更新时间:2023-10-29 20:45:02 25 4
gpt4 key购买 nike

我有这些声明,他们的结果就在附近。

string a = "abc";
string b = "abc";

Console.Writeline(a == b); //true

object x = a;
object y = b;

Console.Writeline(x == y); // true

string c = new string(new char[] {'a','b','c'});
string d = new string(new char[] {'a','b','c'});

Console.Writeline(c == d); // true

object k = c;
object m = d;

Console.Writeline(k.Equals(m)) //true

Console.Writeline(k == m); // false

为什么最后一个平等给了我 false ?

问题是为什么(x == y)为真(k == m)为假

最佳答案

对于字符串,==使用 object 时,运算符被重载以测试值相等性使用引用相等性。

cd当您使用 Equals 时, 字符串在km ,使用了重载方法。

c == dtrue由于上述原因 - 在 string 上使用了值相等运算符重载时的类型。

关于c# - 对象相等在 .NET 中的行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10176737/

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