📌  相关文章
📜  检查是否有两个ValueTuple<T1,T2>在C#中是否相等

📅  最后修改于: 2021-05-29 14:00:48             🧑  作者: Mango

ValueTuple是C#7.0中引入的结构,表示值类型Tuple。它已包含在.NET Framework 4.7或更高版本中。它允许您存储一个数据集,该数据集包含可能彼此相关或不相关的多个值。
在ValueTuple 中,可以使用Equals方法检查两个值元组是否相同。换句话说,可以说此方法将返回一个值,该值指示给定的ValueTuple 实例是否等于指定的对象。如果给定值元组相等,则返回true,否则返回false。可以通过两种不同的方式重载此方法:

  1. 等于(ValueTuple )方法
  2. 等于(对象)方法

等于(ValueTuple )方法

Equals(ValueTuple )方法用于检查两个ValueTuple 实例是否相等。它总是返回true。此方法的返回类型为System.Boolean。在Equals(ValueTuple )方法中,在以下情况下,另一个参数被认为等于当前实例:

  • 组件的类型与当前实例的类型相同。
  • 元素与当前实例的元素相等,并且每个元素的相等性由默认的相等比较器确定。

句法:

public bool Equals (ValueTuple);

返回:此方法的返回类型为System.Boolean 。如果给定实例等于指定实例,则返回true。否则,它返回false。

例子:

// C# program to illustrate the
// use of Equals(ValueTuple) Method
using System;
  
namespace exampleofvaluetuple {
  
class GFG {
  
    // Main Method
    static void Main(string[] args)
    {
        // 1-ValueTuple
        var u1 = ValueTuple.Create(47);
        var u2 = ValueTuple.Create(499);
        Console.WriteLine("Result 1: {0}", u1.Equals(u2));
  
        // 2-ValueTuple
        var y1 = ValueTuple.Create(22, 33);
        var y2 = ValueTuple.Create(22, 444);
        Console.WriteLine("Result 2: {0}", y1.Equals(y2));
  
        // 3-ValueTuple
        var a1 = ValueTuple.Create(23, 45, 67);
        var a2 = ValueTuple.Create(23, 45, 67);
        Console.WriteLine("Result 3: {0}", a1.Equals(a2));
  
        // 4-ValueTuple
        var z1 = ValueTuple.Create(2, 37, 48, 1);
        var z2 = ValueTuple.Create(0, 23, 56, 78);
        Console.WriteLine("Result 4: {0}", z1.Equals(z2));
    }
}
}
输出:
Result 1: False
Result 2: False
Result 3: True
Result 4: False

2. Equals(Object)方法

在ValueTuple 中,Equals(Object)方法用于返回一个值,该值表明当前实例等于指定的对象。在Equals(Object)方法中,在以下情况下,obj被认为等于当前实例:

  • 这是一个ValueTuple值类型。
  • 组件的类型与当前实例的类型相同。
  • 元素与当前实例的元素相等,并且每个元素的相等性由默认的相等比较器确定。

句法:

public override bool Equals (object obj);

在这里,obj是要与此实例进行比较的对象。

返回类型:此方法的返回类型为System.Boolean 。如果给定实例等于指定对象,则返回true。否则,返回false。

例子:

// C# program to illustrate the
// use of Equals(Object) method
using System;
  
namespace exampleofvaluetuple {
  
class GFG {
  
    // Main Method
    static void Main(string[] args)
    {
        // 2-ValueTuple
        var u1 = ValueTuple.Create(4, 30);
        var u2 = ValueTuple.Create(4, 30);
  
        // Checking the given value 
        // tuples are equal or not
        // Using Equal() Method
        if (u1.Equals(u2) == true) {
  
            Console.WriteLine("Both value tuples are equal");
        }
        else {
            Console.WriteLine("Both value tuples are not equal");
        }
    }
}
}
输出:
Both value tuples are equal