C#4.0新特性之元组Tuple

原创 2016年08月31日 16:39:28
组元使用泛型来简化一个类的定义。

 

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);


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Unity3d 镜面反射 vertex and frag Shader源码

Unity3d 镜面反射 网上能找到的基本上是固定管道或表面渲染的shader, 特此翻译为顶点、片段渲染的Shader, 本源码只涉及shader与cs部分, Editor部分使用NGUI绘制的,...

3.2.1.2 在 C# 中使用元组

3.2.1.2 在 C# 中使用元组   我们说过,如果使用 .NET 4.0,可以使用现成的泛类型,Tuple,来自 System 命名空间。我们要看一下如何实现类似的简单类型。 在任何情况下...
  • hadstj
  • hadstj
  • 2014年09月16日 20:42
  • 2071

c#4.0新特性之 组元(Tuple)

组元是C# 4.0引入的一个新特性,编写的时候需要基于.NET Framework 4.0或者更高版本。组元使用泛型来简化一个类的定义。 先以下面的一段代码为例子: 1 public class ...

C#4.0中的元组对象Tuple

一、什么是元组 元组就是一些对象的集合,在我们编程时,比如一个人的信息,我们常常创建一个Person类去描述一个人,传统的做法如下: public class Person{   publi...

浅谈Tuple之C#4.0新特性那些事儿你还记得多少?

今天给大家分享的内容基于前几天收到的一条留言信息,留言内容是这样的: 看了这位网友的留言相信有不少刚接触开发的童鞋们也会有同样的困惑,除了用新建类作为桥梁之外还有什么好的办法?很多童鞋肯定会想到Da...

C#4.0新特性(1):Dynamic Lookup 动态查找

原文转自:C#4.0新特性(1):Dynamic Lookup 动态查找 C# 4.0的主要主题是动态编程。对象的意义变得越来越“动态”,它们的结构和行为无法通过静态类型来捕获,或者...

C#4.0 新特性 动态类型Dynamic

转自 http://www.cnblogs.com/ryanding/archive/2010/12/09/1900106.html .Net 4.0 之 Dynamic 动...

C#4.0的新特性

一、新关键词——dynamic  在新版本的C#中,dynamic关键词是一个很重要的新特性,现在你可以创建动态对象并在运行时再决定它的类型。而且.net 4.0为CLR加入了一组为动态语言服务的运行...

C#4.0新特性(3):变性 Variance(逆变与协变)

原文出自:C#4.0新特性(3):变性 Variance(逆变与协变)   一句话总结:协变让一个粗粒度接口(或委托)可以接收一个更加具体的接口(或委托)作为参数(或返回值);逆变让...

C#4.0新特性

C#4.0新特性,包括泛型的协变与逆变、动态类型、命名参数、可选参数
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#4.0新特性之元组Tuple
举报原因:
原因补充:

(最多只允许输入30个字)