C#新特性-元组的定义和使用
2020-07-19 04:54
896 查看
元组这个新特性就是能够一次性返回多个值
1.使方法 可以返回多个返回值 而不需要借助 out ref 关键字。
2.使方法 可以返回多个返回值 而不需要借助 out ref 关键字,Tuple这个泛型类,可以允许我们返回多个参数。
一、什么是元组
元组就是一些对象的集合,在我们编程时,比如一个人的信息,我们常常创建一个Person类去描述一个人,传统的做法如下:
[code]public class Person{ public int ID{get;set;} public string Name{get;set;} } Person a=new Person(){ID=1001,Name='CodeL'}; Console.WriteLine(a.Name);
那么我们使用元组可以怎么做呢?如下所示
Tuple<int,string> a=new Tuple<int,string>(1001,'CodeL'); //直接使用元组对象,不需要创建自定义的对象
Console.WriteLine(a.Item2);//Item1 代表第一个,Item2代表第二个,每一个元组对象都有一个默认的item属性
由此可见,元组最大的用处就是,不用为了 一些简单的结构或对象而去新建一个类了。
注意的是tuple最多支持8个成员,如果成员超过了8个我们可以将第8个成员当成一个元组,通过元祖的嵌套去完成,如
列如:Tuple<string, int, int, int, int, int, int, Tuple<int, int, int>> 红色部分是第8个。这里的第八个成员又是一个元组。
二、元组的使用
1、元组对象的创建和遍历
创建元组对象有两种方法,如下:
[code] //通过构造函数创建元组对象 Tuple<string, int, double> tuple1 = new Tuple<string, int, double>("数学", 100, 100.1); //通过静态函数创建元组对象 Tuple<string, int, double> tuple2 = Tuple.Create<string, int, double>("英语", 200, 200.2); //元组对象的遍历,元组对象有一个默认的item属性 Console.WriteLine($"{tuple1.Item1} {tuple1.Item2} {tuple1.Item3}"); Console.WriteLine($"{tuple2.Item1} {tuple2.Item2} {tuple2.Item3}");
2、元组与数据集合的结合
按照之前创建自定义的数据类型的使用方法,我们一般是使用 List<Person> listPerson=new List<Person>(); 但是通过元组我们如下所示:
[code] List<Tuple<string, string, int, int, int>> listPerson = new List<Tuple<string, string, int, int, int>>() { new Tuple<string, string, int, int, int>("菲菲","女",23,161,50), new Tuple<string, string, int, int, int>("张三","男",25,171,66), Tuple.Create<string,string,int,int,int>("李四","男",25,178,78) }; foreach (var item in listPerson) { Console.WriteLine($"{item.Item1} {item.Item2} {item.Item3} {item.Item4} {item.Item5}"); }
相关文章推荐
- 在C#中定义和使用自己的特性
- C#特性学习与使用(为枚举定义Description)
- C#特性学习与使用(为枚举定义Description)
- (转)(翻译)在C#中定义和使用自己的特性
- 在C#中定义和使用自己的特性
- (翻译)在C#中定义和使用自己的特性 (转)
- C#中定义和使用自己的特性(二)
- (翻译)在C#中定义和使用自己的特性
- (翻译)在C#中定义和使用自己的特性
- (翻译)在C#中定义和使用自己的特性
- 在C#中定义和使用自己的特性
- (转)C#特性学习与使用(为枚举定义Description)
- [导入]VS 2005中使用C#的新特性:可空类型
- [导入]VS 2005中使用C#的新特性:可空类型
- C# 使用‘反射(Assembly)’查找具有指定‘特性(Attributes) ’的类
- [导入]VS 2005中使用C#的新特性:可空类型
- C#发现之旅第十一讲 使用反射和特性构造自己的ORM框架
- C#中可选参数和命名参数的定义及使用
- 《Effective C#》读书笔记——条目4:使用Conditional特性而不是#if条件编译<C#语言习惯>
- C# 3.0新特性初步研究 Part2:使用扩展方法