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

定义

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

generic <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename TRest>
public ref class Tuple : IComparable, System::Collections::IStructuralComparable, System::Collections::IStructuralEquatable
generic <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename TRest>
public ref class Tuple : IComparable, System::Collections::IStructuralComparable, System::Collections::IStructuralEquatable, System::Runtime::CompilerServices::ITuple
public class Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable
public class Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable, System.Runtime.CompilerServices.ITuple
[System.Serializable]
public class Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable
type Tuple<'T1, 'T2, 'T3, 'T4, 'T5, 'T6, 'T7, 'Rest> = class
    interface IStructuralComparable
    interface IStructuralEquatable
    interface IComparable
type Tuple<'T1, 'T2, 'T3, 'T4, 'T5, 'T6, 'T7, 'Rest> = class
    interface IStructuralComparable
    interface IStructuralEquatable
    interface IComparable
    interface ITuple
[<System.Serializable>]
type Tuple<'T1, 'T2, 'T3, 'T4, 'T5, 'T6, 'T7, 'Rest> = class
    interface IStructuralEquatable
    interface IStructuralComparable
    interface IComparable
[<System.Serializable>]
type Tuple<'T1, 'T2, 'T3, 'T4, 'T5, 'T6, 'T7, 'Rest> = class
    interface IStructuralEquatable
    interface IStructuralComparable
    interface IComparable
    interface ITuple
Public Class Tuple(Of T1, T2, T3, T4, T5, T6, T7, TRest)
Implements IComparable, IStructuralComparable, IStructuralEquatable
Public Class Tuple(Of T1, T2, T3, T4, T5, T6, T7, TRest)
Implements IComparable, IStructuralComparable, IStructuralEquatable, ITuple

类型参数

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 元组 (八进制) 。 请注意,它使用类型推理来确定每个组件的类型。

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
open System

let primes = Tuple.Create(2, 3, 5, 7, 11, 13, 17, 19)
printfn $"Prime numbers less than 20: {primes.Item1}, {primes.Item2}, {primes.Item3}, {primes.Item4}, {primes.Item5}, {primes.Item6}, {primes.Item7}, and {primes.Rest.Item1}"
//    Prime numbers less than 20: 2, 3, 5, 7, 11, 13, 17, and 19
Dim 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 元组。

var primes = new Tuple<Int32, Int32, Int32, Int32, Int32, Int32, Int32,  
             Tuple<Int32>> (2, 3, 5, 7, 11, 13, 17, new Tuple<Int32>(19));
let primes = new Tuple<Int32, Int32, Int32, Int32, Int32, Int32, Int32,  
               Tuple<Int32>> (2, 3, 5, 7, 11, 13, 17, new Tuple<Int32>(19))
Dim primes = New Tuple(Of Int32, Int32, Int32, Int32, Int32, Int32, Int32, _ 
             Tuple(Of Int32))(2, 3, 5, 7, 11, 13, 17, New Tuple(Of 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提供。)

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);
let from1980 = Tuple.Create(1203339, 1027974, 951270)
let from1910 = new Tuple<int, int, int, int, int, int, int, Tuple<int, int, int>>(465766, 993078, 1568622, 1623452, 1849568, 1670144, 1511462, from1980)
let 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)
Dim from1980 = Tuple.Create(1203339, 1027974, 951270)
Dim from1910 As New Tuple(Of Integer, Integer, Integer, Integer, Integer, Integer, Integer, _
    Tuple(Of Integer, Integer, Integer)) _
    (465766, 993078, 1568622, 1623452, 1849568, 1670144, 1511462, from1980)
Dim population As New Tuple(Of String, Integer, Integer, Integer, Integer, Integer, Integer, _ 
    Tuple(Of Integer, Integer, Integer, Integer, Integer, Integer, Integer, Tuple(Of Integer, Integer, Integer))) _
    ("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> 对象作为方法参数,则可以为线程的启动例程提供七个数据项。

构造函数

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

初始化 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 类的新实例。

属性

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 中的元素数。

适用于

另请参阅