深入解密.NET(Tuple元祖)
元组(Tuple)数学概念上是指包含特定元素与数列的数据结构,n-Tuple称为一个n元祖。比如拿数据表来类比,数据表的每一行就是一个元祖,每一列是元祖的一个属性。
它可以视为由于你不想大动干戈创建一个类或者struct去抽象一个数据结构,只想要一个临时工来替代类或者struct的角色时候来充当临时工。Tuple充当一个简单对象存在。
举个例子:如果需要一个返回一个联系人的名字(string)和年龄(int),可能我们做如下封装
public class Contants
{
public string Name { get; set; }
public int Age { get; set; }
}
换一个场景,如果我们只知道一个函数需要返回string,int两个返回值,而不针对任何特定的对象。Tuple会是新的选择之一。
var t1=new Tuple<string, int>("xiaoMing", );
var t2 = Tuple.Create<string,int>("", ); Console.WriteLine(t1.Item1);
Console.WriteLine(t1.Item2);
Console.WriteLine(t1.GetHashCode());
Tuple的实现也很简单:Tuple<T1,……>最多8个参数,均继承一个internal的接口ITuple。Tuple负责创建上面的对象
内部实现,只读的readonly属性,哈希值、固定size等:
public class Tuple<T1, T2, T3, T4, T5, T6, T7, TRest> : IStructuralEquatable, IStructuralComparable, IComparable, ITuple
{
// Fields
private readonly T1 m_Item1;
private readonly T2 m_Item2;
private readonly T3 m_Item3;
private readonly T4 m_Item4;
private readonly T5 m_Item5;
private readonly T6 m_Item6;
private readonly T7 m_Item7;
private readonly TRest m_Rest;
***
***
深入解密.NET(Tuple元祖)的更多相关文章
- Python基础数据类型(四) tuple元祖
元祖tuple(,) 元祖就是不可变的列表 元祖用()表示,元素与元素之间用逗号隔开,数据类型没有限制 tu = ('科比','詹姆斯','乔丹') tu = tuple('123') 小括号中 有一 ...
- python基础二(list,tuple元祖、dic字典,字符串)
一.列表list 1.list定义 列表即数组 ,list或array..列表中的每个元素都有自己的编号,从0开始,编号也可叫做下标,角标,索引.最后一个元素的下标也可用-1表示.: list定义时, ...
- Tuple元祖
http://www.codeproject.com/Articles/193537/C-4-Tuples
- 4、Python 基础类型 -- Tuple 元祖类型
Python 元组 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 如下实例: 实例(P ...
- 数据类型:list列表[]、元祖tuple()、dict字典{}
List 列表[] 可变的 lst = [1,2,3,4] #改 lst[(元素下标)] = '需要修改的' #通过下表修改 lst[下标:下标] = '需要修改的' #通过范围修改 #加 lst.a ...
- 元祖tuple
1.区别: 列表有序的,可以被修改 元祖一级元素不可以被修改,删除,添加,内部的列表中的元素可以被修改 tu = (5,'gf',58,[65,'hf'],'fdg') tu[3][1]=3562.定 ...
- 列表list和元祖tuple
list和tuple list列表: Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: ...
- python学习-day12:列表、元祖、字典介绍和内置
list:列表 >>>----可以被修改.修改成元素,元素可以使单独的数字,也可以是:新的list. 通过:链表..每个元素存储的时候,同时会指向下一个元素. 二.list编辑修改方 ...
- Python学习笔记---切片 列表 元祖 字典 集合
列表[1,2,3,2]#[] 元祖(1,2,3,2)#() 字典{1:2,3:2}#{} 集合{1,2,3,2}#{} 1,集合与列表的区别,集合里不能有重复元素 2.字典与集合的区别,都是用花括号表 ...
随机推荐
- day7 七、字符编码,字符字节与文件操作
一.字符编码 1.定义:人类能识别的是字符等高级标识符,电脑只能识别0,1组成的标识符,要完成人与机器之间的信息交流,一定需要一个媒介,进行两种标识符的转化(两种标识符的对应关系) 对应关系形成的结构 ...
- eclipse启动报错:Could not create the java virtual machine
用maven.springboot开发时,安装了当时最新版的eclipse(3.5.5).eclipse解压版的非常方便,想先安装了看看.暂时没有升级其他软件. 打开的时候报错: 原因其实就是还木有升 ...
- SQL Server2012远程访问设置
http://jingyan.baidu.com/article/a681b0de3bdb7b3b19434667.html?qq-pf-to=pcqq.group 1.打开SQL server201 ...
- [No0000190]vim8安装教程和vim中文帮助文档Vimcdoc安装方法-Vim使用技巧(5)
Vim8.0是近十年来的一次大更新,支持任务.异步I/O.Channels和JSON以及异步计时器.Lambdas 和 Closures等,还包括对GTK + 3的支持.由于ubuntu默认安装的Vi ...
- 用mysql-connector操作MySQL数据库
首先是工具库的安装 pip install mysql-connector 连接数据库 #连接数据库 #常规连接方式 conn = mysql.connector.connect(user=', da ...
- Etcd+Confd实现Nginx配置文件自动管理
一.需求 我们使用Nginx做七层负载均衡,后端是Tomcat.项目采用灰度发布方式,每次项目升级,都要手动先从Nginx下摘掉一组,然后再升级这组,当项目快速迭代时,手动做这些操作显然会增加部署时间 ...
- php新加扩展模块
记录下在已经编译安装的PHP上面增加扩展模块,下面以安装mbstring.so为例 1.进入PHP源码文件中的mbstring文件夹,一般都是在ext目录 cd php-5.5.29/ext/mbst ...
- 数据在内存中的存储方式( Big Endian和Little Endian的区别 )(x86系列则采用little endian方式存储数据)
https://www.cnblogs.com/renyuan/archive/2013/05/26/3099766.html 1.故事的起源 “endian”这个词出自<格列佛游记>.小 ...
- [dpdk] SDK编译-简单扼要版
0. 前提: 环境是CentOS7,archlinux编译有问题,不知道却什么. 1. 解压: [root@dpdk dpdk]# tar Jxf dpdk-2.2.0.tar.xz 2. 设置环境变 ...
- Flink – metrics V1.2
WebRuntimeMonitor .GET("/jobs/:jobid/vertices/:vertexid/metrics", handler(new JobVertexM ...