如何使用C#中的ValueTuple

本文转载自微信公众号「码农读书」,作者 码农读书 。转载本文请联系码农读书公众号。

晋源网站建设公司成都创新互联,晋源网站设计制作,有大型网站制作公司丰富经验。已为晋源上千余家提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的晋源做网站的公司定做!

Tuple 是一种数据结构,它由一个有序的、有限的、大小固定的、不可变的异构元素的序列组成,当我们说 Tuple 中的元素不可变,意味着其中的元素不能进行修改。

ValueTuple 是在 C# 7 中被引入,它主要用来解决 Tuple 的两个问题。

  • 解决语义化问题,在之前你只能通过 Item1,Item2, ... 的方式进行元素访问
  • 解决性能问题,因为 ValueTuple 是一个轻量级的值类型

这篇文章将会讨论 ValueTuple 是什么及如何使用。

ValueTuple 和 Tuple

ValueTuple 是一个轻量级的值类型,并支持强命名,而 Tuple 是一个引用类型,总的来说,ValueTuple 要比 Tuple 拥有更高的性能,Tuple 中的属性是只读的,也就是说一旦创建好之后就不能进行变更了,而 ValueTuple 的属性就可以在创建之后进行修改。

安装 System.ValueTuple

一旦使用 Visual Studio 创建好 Console 应用程序后,接下来就可以安装 NuGet 包了,你可以使用 Visual Studio 2019 IDE 进行可视化安装,也可以在 .NET CLI 窗口中使用如下命令。

 
 
 
 
  1. dotnet add package System.ValueTuple 

请注意现在 ValueTuple 已经作为 .NET Framework 4.7 的一个子集存在了。

创建 ValueTuple

有几种方式可以创建 ValueTuple,大致如下:

  • 使用构造函数
  • 使用 Create 方法
  • 使用 ()

下面的代码片段展示了如何使用 构造函数 来创建 ValueTuple。

 
 
 
 
  1. ValueTuple valueTuple =new ValueTuple(1, "Joydip", "Kanjilal"); 

再来看看如何通过 Create 方法创建 ValueTuple,如下代码所示:

 
 
 
 
  1. var valueTuple = ValueTuple.Create(1, "Joydip", "Kanjilal"); 

你也可以给成员名赋值相应的value来创建一个 ValueTuple,如下代码所示:

 
 
 
 
  1. var author = (Id: 1, FirstName: "Joydip", LastName: "Kanjilal"); 

除了上面这种方法,还可以将 成员名 + 对应值 放置在左边来实现对 ValueTuple 的创建和初始化,代码如下:

 
 
 
 
  1. (int Id, string FirstName, string LastName) author = (1, "Joydip", "Kanjilal"); 

ValueTuple 的命名属性

ValueTuple 支持更加语义化的命名属性,用来替代默认的 Item1,Item2,Item3 ... 下面的代码展示了如何给 ValueTuple 的属性分配名字。

 
 
 
 
  1. (int Id, string FirstName, string LastName) author = (1, "Joydip", "Kanjilal"); 

从方法中返回 ValueTuple

和 Tuple 一样,也可以使用 ValueTuple 从方法中返回多个值,下面的代码片段展示了如何从方法中返回 ValueTuple。

 
 
 
 
  1. static (int, string, string) GetAuthor() 
  2.     return (Id: 1, FirstName: "Joydip", LastName: "Kanjilal"); 

使用 解构函数从 ValueTuple 中提取成员

可以使用 解构函数 从 ValueTuple 中提取多个成员,下面的代码片段展示了如何去实现。

 
 
 
 
  1. (int Id, string FirstName, string LastName) = GetAuthor(); 

修改 ValueTuple 中的值

文章之前也提到了,Tuple 创建好之后就不能对其成员进行修改,而 ValueTuple 却可以,下面的代码展示了这两者的区别。

从上图中的错误信息栏中,可以看出,Tuple 中的 Item 是只读的,不支持修改。

最后要提的一点是:你可以利用扩展方法实现 System.Tuple 和 System.ValueTuple 之间的互转,下面的代码展示了如何将 ValueTuple 转成 Tuple。

 
 
 
 
  1. var valueTuple = ValueTuple.Create(1, "Joydip", "Kanjilal"); 
  2. var tuple = valueTuple.ToTuple(); 

ValueTuple 拥有比 Tuple 更简单的词法和更高的性能,此外,还可以修改它们的数据成员并且还可以给它们赋一些有意义的名字,总之,有太多的理由值得你用 ValueTuple 来代替 Tuple 了。

译文链接:https://www.infoworld.com/article/3528752/how-to-use-valuetuples-in-csharp.html

分享标题:如何使用C#中的ValueTuple
文章源于:http://www.36103.cn/qtweb/news27/8277.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联