博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈Tuple之C#4.0新特性那些事儿你还记得多少?
阅读量:4358 次
发布时间:2019-06-07

本文共 2118 字,大约阅读时间需要 7 分钟。

来源:微信公众号CodeL

今天给大家分享的内容基于前几天收到的一条留言信息,留言内容是这样的:

 

 看了这位网友的留言相信有不少刚接触开发的童鞋们也会有同样的困惑,除了用新建类作为桥梁之外还有什么好的办法?很多童鞋肯定会想到DataSet,不错,DataSet完全可以实现各种数据集的传递,而且还很方便,但是一般我们更推荐使用List集合,那么List集合如何在不确定属性和类的时候传递包含多个字段的集合呢?为一些简单的结构而新建一个类显然是不合理的。

一、4.0新特性中的Tuple

大家可以回顾一下c#4.0中增加的一个新特性,元组Tuple,它是一种固定成员的泛型集合:

下面先看看官方的一个使用例子:

创建一个包含7个元素的Tuple数组

// Create a 7-tuple.

var population = new Tuple<string, int, int, int, int, int, int>( "New York", 7891957, 7781984, 7894862, 7071639, 7322564, 8008278);// Display the first and last elements.

Console.WriteLine("Population of {0} in 2000: {1:N0}",population.Item1, population.Item7);

用法非常简单方便,普通的方式我们可能需要这样:

public class A{ 

 public int ID{get;set;} 

 public string Name{get;set;}

}

A a=new A(){ID=1001,Name='CodeL'};

Console.WriteLine(a.Name);

而使用Tuple我们只需要这样:

Tuple<int,string> a=new Tuple<int,string>(1001,'CodeL');

Console.WriteLine(a.Item2);//Item1 代表第一个,Item2代表第二个

这样我们就可以不用为了 一些简单的结构或对象而去新建一个类了。
注意的是tuple最多支持8个成员,注意第8个成员很特殊,如果有8个成员,第8个必须是嵌套的tuple类型。

列如:Tuple<string, int, int, int, int, int, int, Tuple<int, int, int>>  红色部分是第8个。

第8个元素使用方法:对象.Rest.Item1,对象.Rest.Item2

 

二、实际场景举例

我们使用Tuple来完成一次简单数据集的传递工作。

将Tuple作为返回值

public List<Tuple<int,string,DateTime>> GetUsers(){ 

  string sql="select ID,Name,CreateTime from Tbl_Users";

using (SqlDataReader r = SqlHelper.ExecuteReader(Connections.AdminDBConString, CommandType.Text, sql))   

 {             

        List<Tuple<int,string,DateTime>> list = new List<Tuple<int,string,DateTime>>(); 

              while (r.Read()) 

              { 

                  Tuple<int,string,DateTime> t = new Tuple<int,string,DateTime>(Convert.ToInt32(r[0]),r[1].ToString(),Convert.ToDatetime(r[2])); 

                  list.Add(t);

                } 

              return list; 

          }

}

使用也非常方便:

List<Tuple<int,string,datetime>> list=GetUsers();

foreach(Tuple<int,string,datetime> t in list)

 Console.write(t.Item1);//ID 

 Console.write(t.Item2);//Name

   Console.write(t.Item3);//CreateTime

}

到这里大家是不是明白了,上面那位童鞋的问题原来可以这么解决。

个人建议一些简单的结构下可以这么使用,过于复杂的对象结构由于Tuple本身的一些限制(如:最多支持8项内容,超过的需要使用TRest)而操作复杂,我在实际开发中使用Tuple最多嵌套过一层Tuple。

大家在平时的工作学习中可以多多了解更多常用的基本知识,很多看起来不起眼的小东西将会在开发过程中起到非常大的作用。

相关资源获取或其他疑问可在公众号留言。如果你有优秀的原创技术类文章也可以投稿分享给大家赚取赏金哟!

微信扫一扫获取更多开发资源:

 

转载于:https://www.cnblogs.com/codelir/p/5143257.html

你可能感兴趣的文章
Web应用漏洞评估工具Paros
查看>>
Git 和 Github 使用指南
查看>>
20180925-4 单元测试
查看>>
mysql的数据存储
查看>>
[转载] Activiti Tenant Id 字段释疑
查看>>
[Java 8] (8) Lambda表达式对递归的优化(上) - 使用尾递归 .
查看>>
SQL Server-聚焦移除Bookmark Lookup、RID Lookup、Key Lookup提高SQL查询性能
查看>>
最小权限的挑战
查看>>
jquery 视觉特效(水平滚动图片)
查看>>
SVG笔记
查看>>
linux下使用dd命令写入镜像文件到u盘
查看>>
001---进程
查看>>
视频人脸检测——OpenCV版(三)
查看>>
php获取来访者在搜索引擎搜索某个关键词,进入网站
查看>>
物联网架构成长之路(8)-EMQ-Hook了解、连接Kafka发送消息
查看>>
2018-2019-1 20165234 20165236 实验二 固件程序设计
查看>>
IDEA的GUI连接数据库写入SQL语句的问题总结
查看>>
Xpath在选择器中正确,在代码中返回的是空列表问题
查看>>
leecode第一百九十八题(打家劫舍)
查看>>
【BZOJ 1233】 [Usaco2009Open]干草堆tower (单调队列优化DP)
查看>>