MSDN Tuple(T1, T2) 元组

Tuple<(Of <(T1, T2>)>)

表示 2 元组,即二元组。

命名空间:System  程序集:  mscorlib(在 mscorlib.dll 中)
语法:
[SerializableAttribute]
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>)>) 对象。通过使用只读的 Item1Item2 实例属性,可以检索元组中组件的值。

元组通常有四种不同的使用方式:

  • 表示一组数据。例如,元组可以表示数据库中的一条记录,并且其组件可以表示该记录的字段。

  • 提供对数据集的轻松访问和操作。下面的示例定义一个 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)

通过单个参数将多个值传递给一个方法。例如,Thread..::.Start(Object) 方法有一个单一参数,可以使用该参数向在启动时线程执行的方法提供一个值。如果将 Tuple<(Of <(T1, T2>)>) 对象作为方法参数提供,则可以提供具有两项数据的线程启动例程。

 

 

posted @ 2010-11-08 13:39  子夜.  Views(868)  Comments(0Edit  收藏  举报