元组的概要: 数组合并了相同类型的对象,而元组合并了不同类型的对象。元组起源于函数编程语言(如F#) ,在 这些语言中频繁使用元组。在N盯4中,元组可通过.NET Fmmework用于所有的NET语言。 .NET 4定义了8个泛型Tuple类和一个静态Tuple类,它们用作元组的工厂。这里的不同泛型Tuple 类支持不同数量的元素。例如,Tuple<T1>包含-个元素,Tuple<T1,T2>包含两个元素,以此类推。 1.第一个例子 private Tuple<int, int> Divide(int dividend, int divisor) { int result = dividend / divisor; int reminder = dividend % divisor; return Tuple.Create<int, int>(result, reminder); //返回两个相同类型元素的元组 } --------测试------------- private void button1_Click(object sender, EventArgs e) { Tuple<int, int> result = Divide(13, 2); Console.WriteLine("result of divison:{0}," + "reminder:{1}", result.Item1, result.Item2); //用属性item1,item2访问元组的项 } -------结果------------- result of divison:6,reminder:1 2.第二个例子 private Tuple<int, string> MyTest2(int dividend, string Name) { int result = dividend / 2; string name = "Hello," + Name; return Tuple.Create<int, string>(result, name); //返回两个不同类型元素的元组 } --------测试------------- private void button2_Click(object sender, EventArgs e) { Tuple<int, string> result = MyTest2(13, "limin"); Console.WriteLine("result of divison:{0}," + "Name:{1}", result.Item1, result.Item2); //用属性item1,item2访问元组的项 } -------结果------------- result of divison:6,Name:Hello,limin 3.第三个例子 如果元组包含的项超过8个,就可以使用带8个参数的Tuple类定义。最后一个模板参数是TRest , 表示必须给它传递一个元组。这样,就可以创建带任意个参数的元组了。 下面说明这个功能: public class Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 其中,最后一个模板参数是一个元组类型,所以可以创建带任意多项的元组: var tuple = Tuple.Create<string,string,string, int,int,int,double, Tuple<int,int>>( "stephanie","Alina","Nagel", 2009,6,2,1.37, Tuple.Create<int,int> (52,3490)); Tuple为何物? 什么是Tuple,在汉语上我们将其翻译为元组。Tuple的概念源于数学概念,表示有序的数据集合。在.NET中Tuple被实现为泛型类型,n-Tuple表示有n个元素的Tuple,集合的元素可以是任何类型,例如定义一个3-Tuple表示Date(Year, Month, Day)时可以定义为: // Release : code01, 2009/05/29 // Author : Anytao, http://www.anytao.com var date = Tuple.Create<int, int, int>(2009, 5, 29); 优势所在: 为方法实现多个返回值体验,这是显然的,Tuple元素都可以作为返回值。 灵活的构建数据结构,符合随要随到的公仆精神。 强类型。 不足总结: 当前Tuple类型的成员被实现为确定值,目前而言,还没有动态决议成员数量的机制,如果你有可以告诉我:-) public class Tuple<T1, T2, T3, T4, T5, T6, T7, TRest>,可能引发ArgumentException。