一、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

}

转载于:https://www.cnblogs.com/liangss/p/5143396.html

浅谈Tuple之C#4.0新特性相关推荐

  1. 浅谈JQuery中$('.classname').get(0); $('.classname').eq(0); $('.classname')[0]三者的区别

    举例浅谈JQuery中$('.classname').get(0); $('.classname').eq(0); $('.classname')[0]三者的区别 demo Dom结构: <di ...

  2. 浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释

    浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释 下面小编就为大家带来一篇浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释.小编觉得挺不错的,现在就分享给 ...

  3. 侯捷C++八部曲笔记(四、C++2.0新特性)

    侯捷C++八部曲笔记(四.C++2.0新特性) 关键字 noexcept override final decltype =default, =delete nullptr auto explicit ...

  4. C#6.0,C#7.0新特性

    C#6.0,C#7.0新特性 C#6.0新特性 Auto-Property enhancements(自动属性增强) Read-only auto-properties (真正的只读属性) Auto- ...

  5. C# 7.0 新特性3: 模式匹配

    本文参考Roslyn项目Issue:#206,及Docs:#patterns. 1. C# 7.0 新特性1: 基于Tuple的"多"返回值方法 2. C# 7.0 新特性2: 本 ...

  6. 背水一战 Windows 10 (43) - C# 7.0 新特性

    背水一战 Windows 10 (43) - C# 7.0 新特性 原文: 背水一战 Windows 10 (43) - C# 7.0 新特性 [源码下载] 背水一战 Windows 10 (43) ...

  7. JDK5.0新特性系列---目录

    JDK5.0新特性系列---目录 JDK5.0新特性系列---1.自动装箱和拆箱 JDK5.0新特性系列---2.新的for循环 JDK5.0新特性系列---3.枚举类型 JDK5.0新特性系列--- ...

  8. [转]C# 2.0新特性与C# 3.5新特性

    C# 2.0新特性与C# 3.5新特性 一.C# 2.0 新特性: 1.泛型List<MyObject> obj_list=new List(); obj_list.Add(new MyO ...

  9. Servlet 3.0 新特性概述

    Servlet 3.0 新特性概述 Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布.该版本在前一版本(Servlet 2.5)的基础上提供了若 ...

最新文章

  1. 教你如何rEFIt-让你开机免按option!
  2. 最实用的logback讲解(2)—appender
  3. Linux系统中文件^M乱码解决
  4. Randomatic mac - AE随机摆动的字母图层效果脚本
  5. java流数据base64,Base64数据的流解码
  6. SSAS系列——【05】多维数据(编程体系结构)
  7. 一个boost底下的线程池
  8. 小组级Windows下架设git服务器
  9. 如何在heroku上部署你的Django程序
  10. c++调用matlab
  11. GIS应用技巧之世界各国矢量获取途径
  12. 详说ArcGIS之重采样技术图文解析
  13. Python基础--搬家具(面向对象)
  14. 图片去水印免费软件哪个好?这几款软件值得一看
  15. 20172305 结对编程项目-四则运算 第二周 阶段总结
  16. 从静态检查工具谈代码编程规范
  17. 【Spring】Spring入门
  18. (第二场网络赛J题)Leaking Roof(bfs)
  19. 51la图片做网店流量统计
  20. PBOC借记贷记应用终端规范文档,对名词解释

热门文章

  1. 图像分类_02神经网络(NN)简介:定义+ 感知机+历史
  2. 图像分类_01图像分类简介:挑战+近邻分类器+CIFAR-10数据集概述
  3. 可怕的乖孩子_当今的中国,有句很可怕的话:所有的乖孩子注定不幸福!
  4. python一键清屏_python添加清屏功能
  5. 十一、CSS初始化详解
  6. 六、MySQL DML数据操纵语言学习笔记(插入、修改、删除详解 + 强化复习)
  7. LeetCode 1878. 矩阵中最大的三个菱形和(模拟)
  8. LeetCode 759. 员工空闲时间(排序)
  9. LeetCode 1418. 点菜展示表(哈希map)
  10. POJ 1577 Falling Leaves(二叉查找树)