鉴于文档(https://docs.microsoft.com/en-us/dotnet/api/system.valuetuple.equals?view=netframework-4.7.1)中的内容,似乎ValueTuple.Equals应始终返回 true
这是否意味着即使元组在其字段中具有不同的值,它也会返回true?
我正在尝试测试它,但我无法用这个简单的代码点击Console.Writeline
:
if((1,2).Equals((2,1)))
{
Console.WriteLine("It's true");
}
我应该注意哪些警告?
我已经使用7.0到7.3的c#版本进行了测试
答案 0 :(得分:16)
您正在阅读非通用ValueTuple
的文档。这个没有字段并且表示“空”ValueTuple
,所以当然一个空元组总是等于另一个空元组。
在您的示例代码中,您使用的是通用ValueTuple<T1, T2>
,此文档文章与它无关。 Here是相关的Equals
方法文档。
答案 1 :(得分:2)
正如您在source ValueTuple.Equals
中看到的那样,总是会返回true
,同样也会在文档中写出来。但是(1, 2)
的类型ValueType<int, int>
具有不同的Equals
逻辑,请参阅here。
答案 2 :(得分:-2)
元组相等是成员,所以(1,2) == (1,2)
但是(1,2) != (2,1)
。