现在的位置: 首页 > 综合 > 正文

System.Tuple类型

2013年12月03日 ⁄ 综合 ⁄ 共 757字 ⁄ 字号 评论关闭

 1.定义

在System命名空间,Microsoft定义了几个泛型Tuple类型,它们全部从Object派生,区别只在于泛型参数的个数。

 

2.用法

一般的,可以用它来存储和传递一个逻辑数据行,比如,在一次函数调用中,获取了员工的姓名和年龄,如果不想自定义类型,就可以通过以下方式,来把这一组类型不同的数据传递到函数外:

        static Tuple<string, int> GetNameAndAge()
        {
            return new Tuple<string, int>("LeonHong", 26);
        }

当然,不足之处在于,它没有自解释性,传递到函数外之后,生产者必须对其有足够的注释说明,否则,光看它的属性,只有诸如Item1,Item2...。如果作为API接口传递给别人使用,会让人摸不着头脑。

 

3.扩展

(1) 编译器只能在调用一个泛型方法时推断泛型类型,调用构造器时不能。因此System命名空间中还包含了一个非泛型静态Tuple类,其中包含了一组静态Create方法,他们可以根据实参来推断泛型的类型

        static Tuple<string, int> GetNameAndAge( string name, int number )
        {
            return Tuple.Create(name, number);
        }

 

(2)如果需要创建大于8个元素的一个Tuple,可以参见以下声明:

public class Tuple<T1, T2, T3, T4, T5, T6, T7, TRest> : IStructuralEquatable, IStructuralComparable, IComparable

通过给TRest给定一个新的Tuple,来完成。

 

 

抱歉!评论已关闭.