Поделиться через


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<T1,T2,T3,T4,T5,T6,T7,TRest> объекта с ровно восемью компонентами, вызвав статический Tuple.Create метод. В следующем примере создается 8-кортеж (octuple), содержащий простые числа, которые меньше 20. Обратите внимание, что для определения типа каждого компонента используется вывод типов.

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

Вы также можете создать экземпляр объекта n-кортежа с восемью Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> или более компонентами, вызвав конструктор. В следующем примере конструктор используется 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 объектов с более чем восемью компонентами.

Чтобы создать экземпляр кортежа n-кортежа с восемью или более компонентами конструктора Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> , вы предоставляете универсальный 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> объект предоставляется в качестве значения 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 параметра в конструкторе класса внешнего Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> объекта.)

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для чтения , Item2, Item3, Item4, Item6Item5и Item7 экземпляра. Все дополнительные компоненты вложены и могут быть извлечены из Rest свойства. В предыдущем примере Item1Item7 свойства извлекают первые через седьмой компонент кортежа. Восьмое до четырнадцати компонентов содержится в кортеже, вложенном на втором уровне, и представлено свойствами.Rest.Item1Rest.Item7 Пятнадцати-семнадцатые компоненты содержатся в кортеже, вложенном на третьем уровне, и представлены хотя свойствами Rest.Rest.Item1Rest.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.

Применяется к

См. также раздел