浅谈Tuple之C#4.0新特性
一、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新特性相关推荐
- 浅谈JQuery中$('.classname').get(0); $('.classname').eq(0); $('.classname')[0]三者的区别
举例浅谈JQuery中$('.classname').get(0); $('.classname').eq(0); $('.classname')[0]三者的区别 demo Dom结构: <di ...
- 浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释
浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释 下面小编就为大家带来一篇浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释.小编觉得挺不错的,现在就分享给 ...
- 侯捷C++八部曲笔记(四、C++2.0新特性)
侯捷C++八部曲笔记(四.C++2.0新特性) 关键字 noexcept override final decltype =default, =delete nullptr auto explicit ...
- C#6.0,C#7.0新特性
C#6.0,C#7.0新特性 C#6.0新特性 Auto-Property enhancements(自动属性增强) Read-only auto-properties (真正的只读属性) Auto- ...
- C# 7.0 新特性3: 模式匹配
本文参考Roslyn项目Issue:#206,及Docs:#patterns. 1. C# 7.0 新特性1: 基于Tuple的"多"返回值方法 2. C# 7.0 新特性2: 本 ...
- 背水一战 Windows 10 (43) - C# 7.0 新特性
背水一战 Windows 10 (43) - C# 7.0 新特性 原文: 背水一战 Windows 10 (43) - C# 7.0 新特性 [源码下载] 背水一战 Windows 10 (43) ...
- JDK5.0新特性系列---目录
JDK5.0新特性系列---目录 JDK5.0新特性系列---1.自动装箱和拆箱 JDK5.0新特性系列---2.新的for循环 JDK5.0新特性系列---3.枚举类型 JDK5.0新特性系列--- ...
- [转]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 ...
- Servlet 3.0 新特性概述
Servlet 3.0 新特性概述 Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布.该版本在前一版本(Servlet 2.5)的基础上提供了若 ...
最新文章
- 教你如何rEFIt-让你开机免按option!
- 最实用的logback讲解(2)—appender
- Linux系统中文件^M乱码解决
- Randomatic mac - AE随机摆动的字母图层效果脚本
- java流数据base64,Base64数据的流解码
- SSAS系列——【05】多维数据(编程体系结构)
- 一个boost底下的线程池
- 小组级Windows下架设git服务器
- 如何在heroku上部署你的Django程序
- c++调用matlab
- GIS应用技巧之世界各国矢量获取途径
- 详说ArcGIS之重采样技术图文解析
- Python基础--搬家具(面向对象)
- 图片去水印免费软件哪个好?这几款软件值得一看
- 20172305 结对编程项目-四则运算 第二周 阶段总结
- 从静态检查工具谈代码编程规范
- 【Spring】Spring入门
- (第二场网络赛J题)Leaking Roof(bfs)
- 51la图片做网店流量统计
- PBOC借记贷记应用终端规范文档,对名词解释
热门文章
- 图像分类_02神经网络(NN)简介:定义+ 感知机+历史
- 图像分类_01图像分类简介:挑战+近邻分类器+CIFAR-10数据集概述
- 可怕的乖孩子_当今的中国,有句很可怕的话:所有的乖孩子注定不幸福!
- python一键清屏_python添加清屏功能
- 十一、CSS初始化详解
- 六、MySQL DML数据操纵语言学习笔记(插入、修改、删除详解 + 强化复习)
- LeetCode 1878. 矩阵中最大的三个菱形和(模拟)
- LeetCode 759. 员工空闲时间(排序)
- LeetCode 1418. 点菜展示表(哈希map)
- POJ 1577 Falling Leaves(二叉查找树)