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}");输出结果: