【问题标题】:ValueTuple.Equals doesn't return trueValueTuple.Equals 不返回 true
【发布时间】:2018-05-15 13:44:02
【问题描述】:

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

【问题讨论】:

  • @RenéVogt 我在 msdn 中读到 确定两个 ValueTuple 实例是否相等。 此方法始终返回 true。

标签: c# tuples


【解决方案1】:

您正在阅读非通用 ValueTuple 的文档。这个没有字段,代表一个“空”ValueTuple,所以当然一​​个空元组总是等于另一个空元组。

在您的示例代码中,您使用的是泛型 ValueTuple<T1, T2>,而这篇文档文章与它无关。 Here 是相关的 Equals 方法文档。

【讨论】:

    【解决方案2】:

    正如您从source 看到的那样,ValueTuple.Equals 总是返回true,确实如此,文档中也是如此。但是(1, 2) 的类型ValueType<int, int> 具有不同的Equals 逻辑,请参阅here

    【讨论】:

      【解决方案3】:

      元组相等是成员,所以(1,2) == (1,2)(1,2) != (2,1)

      【讨论】:

        猜你喜欢
        • 2013-04-22
        • 2023-02-16
        • 2016-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-12
        • 1970-01-01
        相关资源
        最近更新 更多