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


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 (восьмерка), содержащий простое число меньше 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, Item5, Item6, и Item7 . Все дополнительные компоненты являются вложенными и могут быть извлечены из Rest свойства . В предыдущем примере Item1 свойства through Item7 извлекают первый по седьмой компоненты кортежа. Компоненты с с восьмого по четырнадцатый содержатся в кортеже, вложенном на втором уровне, и представлены свойствами Rest.Item1 through Rest.Item7 . Компоненты от пятнадцатого до семнадцатого содержатся в кортеже, вложенном на третьем уровне, и представлены свойствами 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.

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

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