如何使用 C# 中的 Tuple
一线码农上海 2021/1/23 8:08:26 次
开局一张图,首先声明的是 Tuple 不是什么新鲜概念,在编程语言 F#,Python 中早就有这个了,Tuple 是一种 有序的,有限不可变的,支持混杂类型的固定个数的 一种数据结构,有些朋友可能就想问了,这里的混杂
是什么意思? 其实就是说 Tuple 中的若干元素类型,即可以是同类型,也可以是不同类型。
值得注意的是,Tuple 中的元素是 只读的,而且其元素的顺序也是在 Tuple 创建的时候指定好的,不能对其中的元素进行后续修改 也不能修改 Tuple 的大小。
为什么要使用 Tuple
下面罗列了几种使用 Tuple 的场景:
-
如果你的方法需要返回多个值 或者 方法需要传递多个值。
-
如果你不想为某些功能专门去定义一个类。
-
如果你有若干个混杂元素,并且想提供对其简单的访问方式。
上面三种情况都是 Tuple 最擅长的应用场景,值得用 Tuple 去解决。
有些朋友可能会想到 匿名类
,但仔细想想, 匿名类 也有其缺陷,比如说方法的返回值是不可能指定为匿名类型的,对吧。
当然 Tuple 也是有缺陷的,罗列如下:
-
当你访问 Tuple 中的元素时,你会发现只能使用 Item1, Item2, Item3 这样的形式,很显然这种太不易读了,而且一旦 Tuple 中的元素过多,维护起来也是一种负担。
-
Tuple 是引用类型不是值类型,意味着它会在
托管堆
上进行内存分配,如果 Tuple 过大并且没有很好的释放,对程序也是一个不小的性能挑战。
C# 中使用 Tuple
叨叨叨的说了这么多,接下来看看如何使用,在 C# 中提供了一个 Tuple
类,这个类下有一个静态方法 Create
可用来生成 Tuple 实例,顺便提一下,这个 Create 方法提供了 8 个重载方法,下面展示了这些方法签名清单。
public static class Tuple { public static Tuple Create(T1 item1) { return new Tuple(item1); } public static Tuple Create(T1 item1, T2 item2) { return new Tuple(item1, item2); } public static Tuple Create(T1 item1, T2 item2, T3 item3) { return new Tuple(item1, item2, item3); } public static Tuple Create(T1 item1, T2 item2, T3 item3, T4 item4) { return new Tuple(item1, item2, item3, item4); } public static Tuple Create(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5) { return new Tuple(item1, item2, item3, item4, item5); } public static Tuple Create(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6) { return new Tuple(item1, item2, item3, item4, item5, item6); } public static Tuple Create(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7) { return new Tuple(item1, item2, item3, item4, item5, item6, item7); } public static Tuple> Create(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8) { return new Tuple>(item1, item2, item3, item4, item5, item6, item7, new Tuple(item8)); } }
接下来看看如何创建和初始化 Tuple。
var listEmployee = new List> { Tuple.Create(1, "Joydip Kanjilal", "INDIA"), Tuple.Create(2, "Michael Stevens", "USA" ), Tuple.Create(3, "Steve Barnes", "USA" ) };
一旦你的 Tuple 创建并初始化好,你可以像迭代其他集合一样迭代 Tuple,下面的代码清单展示了如何去实现。
foreach (Tuple tuple in listEmployee) { Console.WriteLine(tuple.Item2); }
下面是完整的代码清单展示了如何去 创建,初始化,迭代。
static void Main(string[] args) { var listEmployee = new List> { Tuple.Create(1, "Joydip Kanjilal", "INDIA"), Tuple.Create(2, "Michael Stevens", "USA" ), Tuple.Create(3, "Steve Barnes", "USA" ) }; foreach (Tuple tuple in listEmployee) { Console.WriteLine(tuple.Item2); } Console.Read(); }
你也可以创建 嵌套的 Tuple,如下代码所示:
static void Main(string[] args) { var tuple = Tuple.Create(1, "Joydip Kanjilal", new Tuple("Hyderabad", "India")); }

关于找一找教程网
本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。
本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。
[如何使用 C# 中的 Tuple]http://www.zyiz.net/tech/detail-151233.html
您可能感兴趣的文章:
- 2020-02-22.netcore 3.1高性能微服务架构:加入swagger接口文档
- 2019-09-04迭代器模式随想
- 2019-09-04C#开发BIMFACE系列12 服务端API之文件转换
- 2019-09-04.NET Core 学习资料精选:进阶
- 2019-09-04.Net cache与cache更新
- 2019-09-04ASP.NET Core 2.1 : 十二.内置日志、使用Nlog将日志输出到文件
- 2019-09-04ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案
- 2021-02-24RabbitMQ 简介
- 2021-02-23应用界面开发小技巧 - 如何在覆盖表单上显示自定义按钮
- 2021-02-22.Net -- NLog日志框架配置与使用

扫描二维码或查找【程序员编程王】
可以随时随地学编程啦!
共有 条评论 网友评论