C#中的ValueTuple结构介绍

2021年3月12日13:01:15 发表评论 863 次浏览

在C#中, ValueTuple结构提供了用于创建的静态方法价值元组。它在下定义系统命名空间。引入.NET Framework 4.7在C#中提供了运行时实现元组。 ValueTuple结构用于表示不包含任何元素的元组。通常, 它提供用于创建或比较值元组的静态方法。借助ValueTuple结构的Create方法, 你可以创建一个值元组, 其中包含从0到8的元素。它在以下方面与Tuple类不同:

  • 它是值类型而不是引用类型。
  • 它是可变的, 而不是只读的。
  • 在ValueTuple中, 项目1, item2, 项目3, 等等。数据成员是字段而不是属性。

该结构实现结构可比, 结构平等, 可比, IComparable <ValueTuple>, IEquatable <ValueTuple>和ITuple接口。

方法

方法 描述
CompareTo(ValueTuple) 将当前的ValueTuple实例与指定的ValueTuple实例进行比较。
创造() 创建一个零值的新值元组。
创建<T1, T2, T3, T4, T5, T6, T7, T8>(T1, T2, T3, T4, T5, T6, T7, T8) 创建一个具有8个组成部分(八进制)的新值元组。
创建<T1, T2, T3, T4, T5, T6, T7>(T1, T2, T3, T4, T5, T6, T7) 创建一个具有7个组成部分的新值元组。
创建<T1, T2, T3, T4, T5, T6>(T1, T2, T3, T4, T5, T6) 创建一个具有6个组件(六联)的新值元组。
创建<T1, T2, T3, T4, T5>(T1, T2, T3, T4, T5) 创建一个具有5个组成部分的新值元组(一个五元组)。
创建<T1, T2, T3, T4>(T1, T2, T3, T4) 创建一个具有4个组成部分(四重)的新值元组。
创建<T1, T2, T3>(T1, T2, T3) 创建一个具有3个组成部分(三重组成)的新值元组。
创建<T1, T2>(T1, T2) 创建一个具有两个组件(一对)的新值元组。
创建<T1>(T1) 创建一个具有1个组件(单例)的新值元组。
等于(ValueTuple) 确定两个ValueTuple实例是否相等。此方法始终返回true。
等于(对象) 返回一个值, 该值指示当前ValueTuple实例是否等于指定的对象。
GetHashCode() 返回当前ValueTuple实例的哈希码。
ToString() 返回此ValueTuple实例的字符串表示形式。

例子:

// C# program to illustrate the 
// methods of ValueTuple struct
using System;
  
class GFG {
  
     // Main method
     static public void Main()
     {
  
         // Creating a value tuple with 
         // zero element using Create method
         var MyTple1 = ValueTuple.Create();
  
         // Using GetHashCode method
         Console.WriteLine( "HashCode of a value tuple with " +
                  "zero elements: " + MyTple1.GetHashCode());
  
         // Creating a value tuple 
         var MyTple2 = ValueTuple.Create(56, 3);
         var MyTple3 = ValueTuple.Create(56, 45);
  
         // Using CompareTo method
         int res1 = MyTple2.CompareTo(MyTple3);
          
         // Display result
         Console.WriteLine( "CompareTo Method Result: " + res1);
     }
}

输出如下:

HashCode of a value tuple with zero elements: 0
CompareTo Method Result: -1

参考:

  • https://docs.microsoft.com/en-us/dotnet/api/system.valuetuple?view=netframework-4.8

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: