【发布时间】:2021-05-18 01:29:15
【问题描述】:
我正在使用 .net core 3.1 / C# 8.0。我有两个元组,我希望它们具有相等的值,但是运行时返回不等式。我的期望有什么问题?
Tuple<decimal, double> firstTuple;
Tuple<decimal, double> secondTuple;
测试:
bool tuplesEqualInValue = (firstTuple == secondTuple);
屏幕截图显示firstTuple 和secondTuple 的值对于每个项目都具有相同的值。然而第一个测试返回false。
文档和其他 SO 帖子暗示我测试应该返回 true:
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-7.3/tuple-equality
【问题讨论】:
-
刚刚测试过
bool secondTestTuplesEqualInValue = firstTuple.Equals(secondTuple);,它返回true。 -
刚刚查看了 Tuple.cs 并没有发现任何引入的运算符,我真的不明白为什么微软声明它支持
==运算符以实现元组值相等。 -
@AlexeyRumyantsev 元组类型特指
ValueTuple,确实具有该覆盖 -
Charlieface,谢谢,现在对我来说有意义了。
-
简而言之,ValueTuples 具有预期的行为,是新的热点