偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何使用 C# 中的 ValueTuple

開(kāi)發(fā) 后端
Tuple 是一種數(shù)據(jù)結(jié)構(gòu),它由一個(gè)有序的、有限的、大小固定的、不可變的異構(gòu)元素的序列組成,當(dāng)我們說(shuō) Tuple 中的元素不可變,意味著其中的元素不能進(jìn)行修改。

本文轉(zhuǎn)載自微信公眾號(hào)「碼農(nóng)讀書(shū)」,作者 碼農(nóng)讀書(shū) 。轉(zhuǎn)載本文請(qǐng)聯(lián)系碼農(nóng)讀書(shū)公眾號(hào)。

Tuple 是一種數(shù)據(jù)結(jié)構(gòu),它由一個(gè)有序的、有限的、大小固定的、不可變的異構(gòu)元素的序列組成,當(dāng)我們說(shuō) Tuple 中的元素不可變,意味著其中的元素不能進(jìn)行修改。

ValueTuple 是在 C# 7 中被引入,它主要用來(lái)解決 Tuple 的兩個(gè)問(wèn)題。

  • 解決語(yǔ)義化問(wèn)題,在之前你只能通過(guò) Item1,Item2, ... 的方式進(jìn)行元素訪問(wèn)
  • 解決性能問(wèn)題,因?yàn)?ValueTuple 是一個(gè)輕量級(jí)的值類型

這篇文章將會(huì)討論 ValueTuple 是什么及如何使用。

ValueTuple 和 Tuple

ValueTuple 是一個(gè)輕量級(jí)的值類型,并支持強(qiáng)命名,而 Tuple 是一個(gè)引用類型,總的來(lái)說(shuō),ValueTuple 要比 Tuple 擁有更高的性能,Tuple 中的屬性是只讀的,也就是說(shuō)一旦創(chuàng)建好之后就不能進(jìn)行變更了,而 ValueTuple 的屬性就可以在創(chuàng)建之后進(jìn)行修改。

安裝 System.ValueTuple

一旦使用 Visual Studio 創(chuàng)建好 Console 應(yīng)用程序后,接下來(lái)就可以安裝 NuGet 包了,你可以使用 Visual Studio 2019 IDE 進(jìn)行可視化安裝,也可以在 .NET CLI 窗口中使用如下命令。

  1. dotnet add package System.ValueTuple 

請(qǐng)注意現(xiàn)在 ValueTuple 已經(jīng)作為 .NET Framework 4.7 的一個(gè)子集存在了。

創(chuàng)建 ValueTuple

有幾種方式可以創(chuàng)建 ValueTuple,大致如下:

  • 使用構(gòu)造函數(shù)
  • 使用 Create 方法
  • 使用 ()

下面的代碼片段展示了如何使用 構(gòu)造函數(shù) 來(lái)創(chuàng)建 ValueTuple。

  1. ValueTuple<int, string, string> valueTuple =new ValueTuple<int, string, string>(1, "Joydip""Kanjilal"); 

再來(lái)看看如何通過(guò) Create 方法創(chuàng)建 ValueTuple,如下代碼所示:

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

你也可以給成員名賦值相應(yīng)的value來(lái)創(chuàng)建一個(gè) ValueTuple,如下代碼所示:

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

除了上面這種方法,還可以將 成員名 + 對(duì)應(yīng)值 放置在左邊來(lái)實(shí)現(xiàn)對(duì) ValueTuple 的創(chuàng)建和初始化,代碼如下:

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

ValueTuple 的命名屬性

ValueTuple 支持更加語(yǔ)義化的命名屬性,用來(lái)替代默認(rèn)的 Item1,Item2,Item3 ... 下面的代碼展示了如何給 ValueTuple 的屬性分配名字。

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

從方法中返回 ValueTuple

和 Tuple 一樣,也可以使用 ValueTuple 從方法中返回多個(gè)值,下面的代碼片段展示了如何從方法中返回 ValueTuple。

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

使用 解構(gòu)函數(shù)從 ValueTuple 中提取成員

可以使用 解構(gòu)函數(shù) 從 ValueTuple 中提取多個(gè)成員,下面的代碼片段展示了如何去實(shí)現(xiàn)。

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

修改 ValueTuple 中的值

文章之前也提到了,Tuple 創(chuàng)建好之后就不能對(duì)其成員進(jìn)行修改,而 ValueTuple 卻可以,下面的代碼展示了這兩者的區(qū)別。

從上圖中的錯(cuò)誤信息欄中,可以看出,Tuple 中的 Item 是只讀的,不支持修改。

最后要提的一點(diǎn)是:你可以利用擴(kuò)展方法實(shí)現(xiàn) System.Tuple 和 System.ValueTuple 之間的互轉(zhuǎn),下面的代碼展示了如何將 ValueTuple 轉(zhuǎn)成 Tuple。

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

ValueTuple 擁有比 Tuple 更簡(jiǎn)單的詞法和更高的性能,此外,還可以修改它們的數(shù)據(jù)成員并且還可以給它們賦一些有意義的名字,總之,有太多的理由值得你用 ValueTuple 來(lái)代替 Tuple 了。

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

 

責(zé)任編輯:武曉燕 來(lái)源: 碼農(nóng)讀書(shū)
相關(guān)推薦

2020-05-22 07:00:00

C#用戶注釋編程語(yǔ)言

2009-08-18 14:29:27

DirectSound

2009-08-19 16:42:41

C#如何使用XML

2015-09-16 15:11:58

C#異步編程

2009-08-06 16:44:03

C#創(chuàng)建WebServ

2024-09-04 08:09:54

2009-03-12 13:49:30

DataTemplatWPFC#

2020-12-31 07:31:10

C# 反射數(shù)據(jù)

2024-04-16 12:13:07

usingC#開(kāi)發(fā)

2020-02-28 09:00:00

ObjectC#編程語(yǔ)言

2009-08-21 15:37:13

C#空格

2009-08-27 17:47:21

c#皮膚

2021-03-07 16:37:52

C#應(yīng)用程序

2009-09-11 11:27:38

AttributeUsC# Attribut

2021-02-01 12:36:59

C# Channels存儲(chǔ)

2009-08-06 17:15:34

C#開(kāi)發(fā)和使用

2025-01-09 07:54:03

2024-04-15 16:11:33

C#HTTP請(qǐng)求.NET

2009-01-19 10:26:02

C#Namespace.NET

2009-08-03 16:39:56

C# Assembly
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)