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] |
Возвращает значение указанного |
| ITuple.Length |
Возвращает количество элементов в элементе |