ValueTuple.Equals不返回true

时间:2018-05-15 13:44:02

标签: c# tuples

鉴于文档(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#版本进行了测试

3 个答案:

答案 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)