C#以及C#7.0中的元组对象详解Tuple

1.什么是元组

元组就是一些对象的集合,在我们编程时,比如一个人的信息,我们常常创建一个Person类,然后创建属性去描述一个人的信息,传统做法就是这样:

public class Person{ 
 public int ID{get;set;} public string Name{get;set;} } Person a=new Person(){ID=1001,Name='滔滔'}; Console.WriteLine(a.Name);

2.那在元组我们怎么做呢?

//直接使用元组对象,不需要创建自定义的对象

Tuple<int,string> tuple=new Tuple<int,string>(1001,"滔滔");

Console.WriteLine(tuple.Item1); //输出:1001(Item1代表第一个)
Console.WriteLine(tuple.Item2); //输出:滔滔(Item1代表第二个)

3.元组的作用?

简单来说就是不用为了简单的结构或对象去创建一个类了。

4.元组的创建(2种方法):

//元祖:允许在一个语句中完成所有变量的赋值
//第一种:通过构造函数创建元祖对象
Tuple<string, int, double> tuple1 = new Tuple<string, int, double>("数学", 12, 12.44);
//第二种:通过静态函数创建元祖对象
Tuple<string, int, double> tuple2 = Tuple.Create<string,int,double>("数学", 12, 12.44);
//输出
Console.WriteLine($"{tuple1.Item1} -- {tuple1.Item2} -- {tuple1.Item3}");
Console.WriteLine($"{tuple2.Item1} -- {tuple2.Item2} -- {tuple2.Item3}");

输出结果:

5.元组与数据集合的结合

按照之前创建自定义的数据类型的使用方法,我们一般是使用  List<Person> listPerson=new List<Person>(); 但是通过元组我们如下所示:

    //元组与数据集合的结合
            List<Tuple<int, string, double>> list = new List<Tuple<int, string, double>>()
            {
                new Tuple<int, string, double>(1001,"滔滔",12.11),
                new Tuple<int, string, double>(1002,"娟娟",43.2),
                Tuple.Create<int,string,double>(1003,"猪猪",12.1)

            };

            foreach(var zhu in list)
            {
                Console.WriteLine($"{zhu.Item1}--{zhu.Item2}--{zhu.Item3}");

输出结果:

6.ValueTuple扩展:使用C#7.0元祖Tuple新特性时,需要在管理NuGet中下载安装【System.ValueTuple】。

注意事项:

  • 由于ASP.NET或ASP.NET MVC有个packages文件加,第三方包都在该文件夹中,估计编译器或其配置与该包有关。
  • 升级Microsoft.NET.Compilers包到最新版才行,即从1.3.2版升级到2.2.0版。

6-1如何创建值元祖

和元组类一样,.Net Framework值元组也只支持1到7个元组元素,如果有8个元素或者更多,需要使用值元组的嵌套和Rest属性去实现。另外ValueTuple类可以提供创造值元组对象的静态方法。

 var tuple3 = new ValueTuple<int, string, double>(1001, "滔滔", 12.1);
            Console.WriteLine($"{tuple3.Item1} -- {tuple3.Item2} -- {tuple3.Item3}");

            var tuple4 = new ValueTuple<int, string, ValueTuple<int, string>>(1001, "滔滔", new ValueTuple<int, string>(1, "里面的"));
            Console.WriteLine($"{tuple4.Item1} -- {tuple4.Item2} -- {tuple4.Item3}");

输出结果:

猜你喜欢

转载自www.cnblogs.com/liutaovip/p/12941948.html