关闭

C#4.0新特性之元组Tuple

1274人阅读 评论(0) 收藏 举报
分类:
组元使用泛型来简化一个类的定义。

 

public class Point
    {
        public int X { get; set; }
        public int Y { get; set; }
    }


            //the user customer data type.
             Point p = new Point() { X = 10, Y = 20 };
            //use the predefine generic tuple type.
             Tuple<int, int> p2 = new Tuple<int, int>(10, 20);
            
            //
             Console.WriteLine(p.X + p.Y);
            Console.WriteLine(p2.Item1 + p2.Item2);

一个简单的包含两个Int类型成员的类,传统的方法定义point需要写很多代码,但是使用tuple却只有一句,组元多用于方法的返回值。如果一个函数返回多个类型,这样就不在用out , ref等输出参数了,可以直接定义一个tuple类型就可以了。非常方便。

//1 member
             Tuple<int> test = new Tuple<int>(1);
            //2 member ( 1< n <8 )
             Tuple<int, int> test2 = Tuple.Create<int, int>(1,2);
            //8 member , the last member must be tuple type.
             Tuple<int, int, int, int, int, int, int, Tuple<int>> test3 = new Tuple<int, int, int, int, int, int, int, Tuple<int>>(1, 2, 3, 4, 5, 6, 7, new Tuple<int>(8));

            //
             Console.WriteLine(test.Item1);
            Console.WriteLine(test2.Item1 + test2.Item2);
            Console.WriteLine(test3.Item1 + test3.Item2 + test3.Item3 + test3.Item4 + test3.Item5 + test3.Item6 + test3.Item7 + test3.Rest.Item1);

第一个定义包含一个成员。

第二个定义包含两个成员,并且使用create方法初始化。

第三个定义展示了tuple最多支持8个成员,如果多于8个就需要进行嵌套。注意第8个成员很特殊,如果有8个成员,第8个必须嵌套定义tuple。如果上面所示。

//2 member ,the second type is the nest type tuple.
             Tuple<int, Tuple<int>> test4 = new Tuple<int, Tuple<int>>(1, new Tuple<int>(2));
            //10 member datatype. nest the 8 parameter type.
             Tuple<int, int, int, int, int, int, int, Tuple<int, int, int>> test5 = new Tuple<int, int, int, int, int, int, int, Tuple<int, int, int>>(1, 2, 3, 4, 5, 6, 7, new Tuple<int, int, int>(8, 9, 10));
 

            //
             Console.WriteLine(test4.Item1 + test4.Item2.Item1);
            Console.WriteLine(test5.Item1 + test5.Item2 + test5.Item3 + test5.Item4 + test5.Item5 + test5.Item6 + test5.Item7 + test5.Rest.Item1 + test5.Rest.Item2 + test5.Rest.Item3);


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:109004次
    • 积分:3006
    • 等级:
    • 排名:第12087名
    • 原创:186篇
    • 转载:124篇
    • 译文:0篇
    • 评论:11条
    最新评论