成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何使用 C# 中的 ValueTuple

開發 后端
Tuple 是一種數據結構,它由一個有序的、有限的、大小固定的、不可變的異構元素的序列組成,當我們說 Tuple 中的元素不可變,意味著其中的元素不能進行修改。

本文轉載自微信公眾號「碼農讀書」,作者 碼農讀書 。轉載本文請聯系碼農讀書公眾號。

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<int, string, string> valueTuple =new ValueTuple<int, string, string>(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

 

責任編輯:武曉燕 來源: 碼農讀書
相關推薦

2020-05-22 07:00:00

C#用戶注釋編程語言

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#創建WebServ

2024-09-04 08:09:54

2009-03-12 13:49:30

DataTemplatWPFC#

2020-12-31 07:31:10

C# 反射數據

2024-04-16 12:13:07

usingC#開發

2020-02-28 09:00:00

ObjectC#編程語言

2009-08-21 15:37:13

C#空格

2009-08-27 17:47:21

c#皮膚

2021-03-07 16:37:52

C#應用程序

2009-09-11 11:27:38

AttributeUsC# Attribut

2021-02-01 12:36:59

C# Channels存儲

2009-08-06 17:15:34

C#開發和使用

2025-01-09 07:54:03

2024-04-15 16:11:33

C#HTTP請求.NET

2009-01-19 10:26:02

C#Namespace.NET

2009-08-03 16:39:56

C# Assembly
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品亚洲精品日韩已方 | 国产精品一区二区免费 | 亚洲成人高清 | 亚洲精品综合一区二区 | 欧美日韩高清一区二区三区 | 亚洲精品一区中文字幕 | 国产在线对白 | 亚洲最大的成人网 | 亚洲免费视频一区二区 | 正在播放国产精品 | 欧美精| 欧美精品一区免费 | 国产综合精品 | 国产 91 视频 | 中文字幕视频在线观看 | 精品免费国产一区二区三区四区介绍 | 日韩免费看视频 | 国产乱码精品1区2区3区 | 毛片黄片免费看 | 91视频一区 | 视频在线一区二区 | 日韩精品视频一区二区三区 | 亚州精品天堂中文字幕 | 成人在线精品视频 | 另类一区| 一区二区三区国产好 | 国产一区二区三区四区三区四 | 精品一区二区三区在线观看 | 超碰3| 日韩精品一区二区在线 | 免费看的av | 一区二区三区高清 | 精品网| 亚洲天天干 | 亚洲精品v日韩精品 | 粉嫩粉嫩芽的虎白女18在线视频 | 亚洲精品久久区二区三区蜜桃臀 | 国产精品中文字幕一区二区三区 | 欧美亚洲一级 | 午夜丁香视频在线观看 | 国产片侵犯亲女视频播放 |