MSDN Tuple(T1, T2) 元组
Tuple<(Of <(T1, T2>)>) 类
表示 2 元组,即二元组。
语法:
[SerializableAttribute]
public class Tuple<T1, T2> : IStructuralEquatable, IStructuralComparable,
IComparable
public class Tuple<T1, T2> : IStructuralEquatable, IStructuralComparable,
IComparable
类型参数
- T1
-
此元组的第一个组件的类型。
- T2
-
此元组的第二个组件的类型。
元组是一种数据结构,其中的值具有特定数目和序列。Tuple<(Of <(T1, T2>)>) 类表示一个二元组,即具有两个分量的元组。2 元组类似于 KeyValuePair<(Of <(TKey, TValue>)>) 结构。
可以通过调用 Tuple<(Of <(T1, T2>)>) 构造函数或静态 Tuple..::.Create<(Of <(T1, T2>)>)(T1, T2) 方法来实例化 Tuple<(Of <(T1, T2>)>) 对象。通过使用只读的 Item1 和 Item2 实例属性,可以检索元组中组件的值。
元组通常有四种不同的使用方式:
-
表示一组数据。例如,元组可以表示数据库中的一条记录,并且其组件可以表示该记录的字段。
-
提供对数据集的轻松访问和操作。下面的示例定义一个 Tuple<(Of <(T1, T2>)>) 对象数组,其中包含学生的姓名以及对丁的测验分数。然后,它循环访问数组来计算平均测试分数。
using System;
public class Example
{
public static void Main()
{
Tuple<string, Nullable<int>>[] scores =
{ new Tuple<string, Nullable<int>>("Jack", 78),
new Tuple<string, Nullable<int>>("Abbey", 92),
new Tuple<string, Nullable<int>>("Dave", 88),
new Tuple<string, Nullable<int>>("Sam", 91),
new Tuple<string, Nullable<int>>("Ed", null),
new Tuple<string, Nullable<int>>("Penelope", 82),
new Tuple<string, Nullable<int>>("Linda", 99),
new Tuple<string, Nullable<int>>("Judith", 84) };
int number;
double mean = ComputeMean(scores, out number);
Console.WriteLine("Average test score: {0:N2} (n={1})", mean, number);
}
private static double ComputeMean(Tuple<string, Nullable<int>>[] scores, out int n)
{
n = 0;
int sum = 0;
foreach (var score in scores)
{
if (score.Item2.HasValue)
{
n += 1;
sum += score.Item2.Value;
}
}
if (n > 0)
return sum / (double) n;
else
return 0;
}
}
// The example displays the following output:
// Average test score: 88 (n=7)
public class Example
{
public static void Main()
{
Tuple<string, Nullable<int>>[] scores =
{ new Tuple<string, Nullable<int>>("Jack", 78),
new Tuple<string, Nullable<int>>("Abbey", 92),
new Tuple<string, Nullable<int>>("Dave", 88),
new Tuple<string, Nullable<int>>("Sam", 91),
new Tuple<string, Nullable<int>>("Ed", null),
new Tuple<string, Nullable<int>>("Penelope", 82),
new Tuple<string, Nullable<int>>("Linda", 99),
new Tuple<string, Nullable<int>>("Judith", 84) };
int number;
double mean = ComputeMean(scores, out number);
Console.WriteLine("Average test score: {0:N2} (n={1})", mean, number);
}
private static double ComputeMean(Tuple<string, Nullable<int>>[] scores, out int n)
{
n = 0;
int sum = 0;
foreach (var score in scores)
{
if (score.Item2.HasValue)
{
n += 1;
sum += score.Item2.Value;
}
}
if (n > 0)
return sum / (double) n;
else
return 0;
}
}
// The example displays the following output:
// Average test score: 88 (n=7)
通过单个参数将多个值传递给一个方法。例如,Thread..::.Start(Object) 方法有一个单一参数,可以使用该参数向在启动时线程执行的方法提供一个值。如果将 Tuple<(Of <(T1, T2>)>) 对象作为方法参数提供,则可以提供具有两项数据的线程启动例程。