gpt4 book ai didi

c# - 意外的元组不等式

转载 作者:行者123 更新时间:2023-12-04 02:27:46 24 4
gpt4 key购买 nike

我正在使用 .net core 3.1/C# 8.0。我有两个元组,我希望它们具有相等的值,但是运行时返回不平等。我的期望有什么问题?

Tuple<decimal, double> firstTuple;
Tuple<decimal, double> secondTuple;

测试:

bool tuplesEqualInValue = (firstTuple == secondTuple);

屏幕截图显示 firstTuplesecondTuple 的值对每一项都保持相同的值。然而第一个测试返回 false

enter image description here

文档和其他 SO 帖子向我暗示测试应该返回 true: https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-7.3/tuple-equality

https://stackoverflow.com/a/44194321/10340388

https://stackoverflow.com/a/5069777/10340388

最佳答案

您的前两个链接讨论了 System.ValueTuple ,这不是你在这里使用的( System.Tuple ),所以它们与这个问题无关。不过,如果您使用的是支持它们的 C# 版本,请考虑改用 ValueTupleHere's a start .

第三个链接使用.Equals 讨论了System.Tuple 的相等性,但您使用的是==。如果您使用过 .Equals比较它们,你会发现它们确实相等:

var firstTuple = Tuple.Create(217930.7650m, 670.556);
var secondTuple = Tuple.Create(217930.7650m, 670.556);
Console.WriteLine(firstTuple.Equals(secondTuple)); // True

使用 == 不起作用,因为与 string 不同,System.Tuple 不会重载 = = 运算符,因此使用比较引用的默认行为。 ( string overloads == )

关于c# - 意外的元组不等式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66203323/

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