Tuple<T1,T2,T3> Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет кортеж из трех компонентов.
generic <typename T1, typename T2, typename T3>
public ref class Tuple : IComparable, System::Collections::IStructuralComparable, System::Collections::IStructuralEquatable
generic <typename T1, typename T2, typename T3>
public ref class Tuple : IComparable, System::Collections::IStructuralComparable, System::Collections::IStructuralEquatable, System::Runtime::CompilerServices::ITuple
public class Tuple<T1,T2,T3> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable
public class Tuple<T1,T2,T3> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable, System.Runtime.CompilerServices.ITuple
[System.Serializable]
public class Tuple<T1,T2,T3> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable
type Tuple<'T1, 'T2, 'T3> = class
interface IStructuralComparable
interface IStructuralEquatable
interface IComparable
type Tuple<'T1, 'T2, 'T3> = class
interface IStructuralComparable
interface IStructuralEquatable
interface IComparable
interface ITuple
[<System.Serializable>]
type Tuple<'T1, 'T2, 'T3> = class
interface IStructuralEquatable
interface IStructuralComparable
interface IComparable
[<System.Serializable>]
type Tuple<'T1, 'T2, 'T3> = class
interface IStructuralEquatable
interface IStructuralComparable
interface IComparable
interface ITuple
Public Class Tuple(Of T1, T2, T3)
Implements IComparable, IStructuralComparable, IStructuralEquatable
Public Class Tuple(Of T1, T2, T3)
Implements IComparable, IStructuralComparable, IStructuralEquatable, ITuple
Параметры типа
- T1
Тип первого компонента кортежа.
- T2
Тип второго компонента кортежа.
- T3
Тип третьего компонента кортежа.
- Наследование
-
Tuple<T1,T2,T3>
- Атрибуты
- Реализации
Комментарии
Кортеж — это структура данных, которая имеет определенное число и последовательность значений. Класс Tuple<T1,T2,T3> представляет собой три кортежа или три кортежа, который представляет собой кортеж с тремя компонентами.
Вы можете создать Tuple<T1,T2,T3> экземпляр объекта, вызвав Tuple<T1,T2,T3> конструктор или статический Tuple.Create<T1,T2,T3>(T1, T2, T3) метод. Значения компонентов кортежа можно получить с помощью свойств экземпляра только Item1Item2для чтения и Item3 экземпляра.
Кортежи обычно используются четырьмя разными способами:
Представление одного набора данных. Например, кортеж может представлять запись базы данных, а его компоненты могут представлять отдельные поля записи.
Для обеспечения простого доступа к набору данных и управления ими. В следующем примере определяется массив Tuple<T1,T2,T3> объектов, содержащих имена учащихся, их средние оценки теста и количество выполненных тестов. Массив передается методу
ComputeStatistics
, который вычисляет среднее и стандартное отклонение тестов.using System; public class Example { public static void Main() { Tuple<string, double, int>[] scores = { Tuple.Create("Jack", 78.8, 8), Tuple.Create("Abbey", 92.1, 9), Tuple.Create("Dave", 88.3, 9), Tuple.Create("Sam", 91.7, 8), Tuple.Create("Ed", 71.2, 5), Tuple.Create("Penelope", 82.9, 8), Tuple.Create("Linda", 99.0, 9), Tuple.Create("Judith", 84.3, 9) }; var result = ComputeStatistics(scores); Console.WriteLine("Mean score: {0:N2} (SD={1:N2}) (n={2})", result.Item2, result.Item3, result.Item1); } private static Tuple<int, double, double> ComputeStatistics(Tuple<string, double, int>[] scores) { int n = 0; double sum = 0; // Compute the mean. foreach (var score in scores) { n += score.Item3; sum += score.Item2 * score.Item3; } double mean = sum / n; // Compute the standard deviation. double ss = 0; foreach (var score in scores) { ss = Math.Pow(score.Item2 - mean, 2); } double sd = Math.Sqrt(ss/scores.Length); return Tuple.Create(scores.Length, mean, sd); } } // The example displays the following output: // Mean score: 87.02 (SD=0.96) (n=8)
open System let computeStatistics (scores: Tuple<string, double, int>[]) = let mutable n = 0 let mutable sum = 0. // Compute the mean. for score in scores do n <- n + score.Item3 sum <- sum + score.Item2 * double score.Item3 let mean = sum / double n // Compute the standard deviation. let mutable ss = 0. for score in scores do ss <- (score.Item2 - mean) ** 2. let sd = sqrt (ss / double scores.Length) Tuple.Create(scores.Length, mean, sd) let scores = [| Tuple.Create("Jack", 78.8, 8) Tuple.Create("Abbey", 92.1, 9) Tuple.Create("Dave", 88.3, 9) Tuple.Create("Sam", 91.7, 8) Tuple.Create("Ed", 71.2, 5) Tuple.Create("Penelope", 82.9, 8) Tuple.Create("Linda", 99.0, 9) Tuple.Create("Judith", 84.3, 9) |] let result = computeStatistics scores printfn $"Mean score: {result.Item2:N2} (SD={result.Item3:N2}) (n={result.Item1})" // The example displays the following output: // Mean score: 87.02 (SD=0.96) (n=8)
Module Example Public Sub Main() Dim scores() = { Tuple.Create("Jack", 78.8, 8), Tuple.Create("Abbey", 92.1, 9), Tuple.Create("Dave", 88.3, 9), Tuple.Create("Sam", 91.7, 8), Tuple.Create("Ed", 71.2, 5), Tuple.Create("Penelope", 82.9, 8), Tuple.Create("Linda", 99.0, 9), Tuple.Create("Judith", 84.3, 9) } Dim result = ComputeStatistics(scores) Console.WriteLine("Mean score: {0:N2} (SD={1:N2}) (n={2})", result.Item2, result.Item3, result.Item1) End Sub Private Function ComputeStatistics(scores() As Tuple(Of String, Double, Integer)) _ As Tuple(Of Integer, Double, Double) Dim n As Integer = 0 Dim sum As Double = 0 ' Compute the mean. For Each score In scores n+= score.Item3 sum += score.Item2 * score.Item3 Next Dim mean As Double = sum / n ' Compute the standard deviation. Dim ss As Double = 0 For Each score In scores ss = Math.Pow(score.Item2 - mean, 2) Next Dim sd As Double = Math.Sqrt(ss/scores.Length) Return Tuple.Create(scores.Length, mean, sd) End Function End Module ' The example displays the following output: ' Mean score: 87.02 (SD=0.96) (n=8)
Получение нескольких значений из метода без использования
out
параметров (в C#) илиByRef
параметров (в Visual Basic). Например, в предыдущем примере возвращается сводная статистика оценки теста в объекте Tuple<T1,T2,T3> .Передача нескольких значений методу через один параметр. Например, метод Thread.Start(Object) имеет один параметр, который позволяет указать одно значение методу, который выполняется потоком при запуске. Если вы предоставляете объект в Tuple<T1,T2,T3> качестве аргумента метода, можно указать подпрограмму запуска потока тремя элементами данных.
Конструкторы
Tuple<T1,T2,T3>(T1, T2, T3) |
Инициализирует новый экземпляр класса Tuple<T1,T2,T3>. |
Свойства
Item1 |
Получает значение первого компонента текущего объекта Tuple<T1,T2,T3>. |
Item2 |
Получает значение второго компонента текущего объекта Tuple<T1,T2,T3>. |
Item3 |
Получает значение третьего компонента текущего объекта Tuple<T1,T2,T3>. |
Методы
Equals(Object) |
Возвращает значение, показывающее, равен ли текущий объект Tuple<T1,T2,T3> указанному объекту. |
GetHashCode() |
Возвращает хэш-код для текущего объекта Tuple<T1,T2,T3>. |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
ToString() |
Возвращает строковое представление значения этого экземпляра Tuple<T1,T2,T3>. |
Явные реализации интерфейса
IComparable.CompareTo(Object) |
Сравнивает текущий объект Tuple<T1,T2,T3> с заданным объектом и возвращает целое число, указывающее, находится ли текущий объект в той же позиции, что и указанный объект, после него или перед ним в порядке сортировки. |
IStructuralComparable.CompareTo(Object, IComparer) |
Сравнивает текущий объект Tuple<T1,T2,T3> с указанным объектом, используя заданный компаратор, и возвращает целое число, которое показывает положение текущего объекта относительно указанного объекта в порядке сортировки: перед объектом, после него или в той же позиции. |
IStructuralEquatable.Equals(Object, IEqualityComparer) |
Возвращает значение, показывающее, равен ли текущий атрибут Tuple<T1,T2,T3> указанному объекту при использовании заданного метода сравнения. |
IStructuralEquatable.GetHashCode(IEqualityComparer) |
Вычисляет хэш-код для текущего объекта Tuple<T1,T2,T3>, используя заданный метод вычисления. |
ITuple.Item[Int32] |
Получает значение указанного элемента |
ITuple.Length |
Возвращает количество элементов в |
Методы расширения
Deconstruct<T1,T2,T3>(Tuple<T1,T2,T3>, T1, T2, T3) |
Разбивает кортеж с 3 элементами на отдельные переменные. |
ToValueTuple<T1,T2,T3>(Tuple<T1,T2,T3>) |
Преобразует экземпляр класса |