使用英语阅读

通过


Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 类

定义

表示 n 元组,n 为 8 或更大值。

C#
public class Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable
C#
public class Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable, System.Runtime.CompilerServices.ITuple
C#
[System.Serializable]
public class Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable

类型参数

T1

此元组的第一个组件的类型。

T2

此元组的第二个组件的类型。

T3

此元组的第三个组件的类型。

T4

此元组的第四个组件的类型。

T5

元组的第五个分量的类型。

T6

元组的第六个分量的类型。

T7

元组的第七个分量的类型。

TRest

任何常规 Tuple 对象,用于定义元组的剩余分量的类型。

继承
Tuple<T1,T2,T3,T4,T5,T6,T7,TRest>
属性
实现

注解

元组是具有特定数量和值序列的数据结构。 类 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 表示具有八个或更多组件的 n 元组。

可以通过调用静态Tuple.Create方法实例化包含恰好八个Tuple<T1,T2,T3,T4,T5,T6,T7,TRest>组件的 对象。 以下示例创建一个包含小于 20 的质数的 8 元组 (八进制) 。 请注意,它使用类型推理来确定每个组件的类型。

C#
var primes = Tuple.Create(2, 3, 5, 7, 11, 13, 17, 19);
Console.WriteLine("Prime numbers less than 20: " + 
                  "{0}, {1}, {2}, {3}, {4}, {5}, {6}, and {7}",
                  primes.Item1, primes.Item2, primes.Item3, 
                  primes.Item4, primes.Item5, primes.Item6,
                  primes.Item7, primes.Rest.Item1);
// The example displays the following output:
//    Prime numbers less than 20: 2, 3, 5, 7, 11, 13, 17, and 19

还可以通过调用 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 构造函数来实例化包含 8 个或更多组件的 n 元组对象。 以下示例使用 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 构造函数创建与上一示例中创建的元组等效的 8 元组。

C#
var primes = new Tuple<Int32, Int32, Int32, Int32, Int32, Int32, Int32,  
             Tuple<Int32>> (2, 3, 5, 7, 11, 13, 17, new Tuple<Int32>(19));

备注

若要创建包含九个或更多组件的 n 元组,必须调用 构造 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 函数。 类的 Tuple 静态工厂方法不支持创建 Tuple 具有 8 个以上组件的对象。

若要使用 构造函数实例化具有八个或更多组件的 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> n 元组,请提供泛型 Tuple 对象作为 rest 参数来定义元组的第八到 第 n个组件。 通过以这种方式嵌套泛型 Tuple 对象,可以创建一个元组,该元组对其组件数没有实际限制。

以下示例创建一个 17 元组,其中包含密歇根州底特律市的人口数据,用于 1860 年到 2000 年的每个全国人口普查。 元组的第一个组件是城市名称。 第二个组件是数据系列的开始日期,第三个组件是开始日期的填充。 每个后续组件按十年间隔提供总体。 17 元组是通过在 Tuple<T1,T2,T3> 对象内嵌套对象来创建的 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 。 (也就是说,对象Tuple<T1,T2,T3>作为类构造函数中的 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 参数值rest提供。) 此Tuple<T1,T2,T3,T4,T5,T6,T7,TRest>对象又嵌套在外部Tuple<T1,T2,T3,T4,T5,T6,T7,TRest>对象中。 (也就是说,Tuple<T1,T2,T3,T4,T5,T6,T7,TRest>对象在外部Tuple<T1,T2,T3,T4,T5,T6,T7,TRest>对象的类构造函数中作为 参数的值rest提供。)

C#
var from1980 = Tuple.Create(1203339, 1027974, 951270);
var from1910 = new Tuple<int, int, int, int, int, int, int, Tuple<int, int, int>> 
    (465766, 993078, 1568622, 1623452, 1849568, 1670144, 1511462, from1980);
var population = new Tuple<string, int, int, int, int, int, int,
    Tuple<int, int, int, int, int, int, int, Tuple<int, int, int>>> 
    ("Detroit", 1860, 45619, 79577, 116340, 205876, 285704, from1910);

可以使用只读 Item1、、Item4Item3Item5Item2Item6、 和 Item7 实例属性检索元组的前七个组件的值。 任何其他组件都是嵌套的,可以从 属性中检索 Rest 。 在前面的示例中, Item1 通过 Item7 属性检索元组的第一个到第七个组件。 第 8 个到第 14 个组件包含在嵌套在第二个级别的元组中,并由 Rest.Item1 through Rest.Item7 属性表示。 第 15 个到第 17 个组件包含在嵌套在第三个级别的元组中,并由 Rest.Rest.Item1 虽然 Rest.Rest.Item3 属性表示。

元组通常以四种不同的方式使用:

  • 表示单个数据集。 例如,元组可以表示数据库记录,其组件可以表示记录的各个字段。

  • 提供对数据集的轻松访问和操作。

  • 从方法返回多个值,而不使用 out C#) 中的参数 (或 ByRef Visual Basic) 中的参数 (。 例如,上一个示例在 对象中 Tuple<T1,T2,T3,T4,T5,T6,T7> 返回其计算的统计信息以及城市名称。

  • 通过单个参数将多个值传递给方法。 例如, Thread.Start(Object) 方法有一个参数,可用于向线程在启动时执行的方法提供一个值。 如果提供 Tuple<T1,T2,T3,T4,T5,T6,T7> 对象作为方法参数,则可以为线程的启动例程提供七个数据项。

构造函数

属性

Item1

获取当前 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 对象的第一个分量的值。

Item2

获取当前 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 对象的第二个分量的值。

Item3

获取当前 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 对象的第三个分量的值。

Item4

获取当前 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 对象的第四个分量的值。

Item5

获取当前 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 对象的第五个分量的值。

Item6

获取当前 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 对象的第六个分量的值。

Item7

获取当前 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 对象的第七个分量的值。

Rest

获取当前 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 对象的剩余分量。

方法

Equals(Object)

返回一个值,该值指示当前的 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 对象是否与指定对象相等。

GetHashCode()

计算当前 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 对象的哈希代码。

GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

返回表示此 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 实例的值的字符串。

显式接口实现

IComparable.CompareTo(Object)

比较当前 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 对象与指定对象,并返回一个整数,该整数指示当前对象在排序顺序中的位置:是在指定对象之前、之后还是在与指定对象相同的位置。

IStructuralComparable.CompareTo(Object, IComparer)

使用指定的比较器将当前的 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 对象与指定对象进行比较,并返回一个整数,该整数指示当前对象在排序顺序中的位置是在指定对象之前、之后还是与其相同。

IStructuralEquatable.Equals(Object, IEqualityComparer)

返回一个值,该值根据指定的比较方法指示当前的 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 对象是否与指定对象相等。

IStructuralEquatable.GetHashCode(IEqualityComparer)

使用指定的计算方法计算当前 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 对象的哈希代码。

ITuple.Item[Int32]

获取指定 Tuple 元素的值。

ITuple.Length

获取 Tuple 中的元素数。

适用于

产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

另请参阅