日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

如何使用 C# 中的 Tuple

發(fā)布時間:2023/12/4 C# 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何使用 C# 中的 Tuple 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

開局一張圖,首先聲明的是 Tuple 不是什么新鮮概念,在編程語言 F#,Python 中早就有這個了,Tuple 是一種 有序的,有限不可變的,支持混雜類型的固定個數(shù)的 一種數(shù)據(jù)結(jié)構(gòu),有些朋友可能就想問了,這里的混雜是什么意思?其實就是說 Tuple 中的若干元素類型,即可以是同類型,也可以是不同類型。

值得注意的是,Tuple 中的元素是 只讀的,而且其元素的順序也是在 Tuple 創(chuàng)建的時候指定好的,不能對其中的元素進行后續(xù)修改 也不能修改 Tuple 的大小。

為什么要使用 Tuple

下面羅列了幾種使用 Tuple 的場景:

  • 如果你的方法需要返回多個值 或者 方法需要傳遞多個值。

  • 如果你不想為某些功能專門去定義一個類。

  • 如果你有若干個混雜元素,并且想提供對其簡單的訪問方式。

上面三種情況都是 Tuple 最擅長的應(yīng)用場景,值得用 Tuple 去解決。

有些朋友可能會想到 匿名類,但仔細想想, 匿名類 也有其缺陷,比如說方法的返回值是不可能指定為匿名類型的,對吧。

當然 Tuple 也是有缺陷的,羅列如下:

  • 當你訪問 Tuple 中的元素時,你會發(fā)現(xiàn)只能使用 Item1, Item2, Item3 這樣的形式,很顯然這種太不易讀了,而且一旦 Tuple 中的元素過多,維護起來也是一種負擔(dān)。

  • Tuple 是引用類型不是值類型,意味著它會在 托管堆 上進行內(nèi)存分配,如果 Tuple 過大并且沒有很好的釋放,對程序也是一個不小的性能挑戰(zhàn)。

C# 中使用 Tuple

叨叨叨的說了這么多,接下來看看如何使用,在 C# 中提供了一個 Tuple 類,這個類下有一個靜態(tài)方法 Create 可用來生成 Tuple 實例,順便提一下,這個 Create 方法提供了 8 個重載方法,下面展示了這些方法簽名清單。

public?static?class?Tuple {public?static?Tuple<T1>?Create<T1>(T1?item1){return?new?Tuple<T1>(item1);}public?static?Tuple<T1,?T2>?Create<T1,?T2>(T1?item1,?T2?item2){return?new?Tuple<T1,?T2>(item1,?item2);}public?static?Tuple<T1,?T2,?T3>?Create<T1,?T2,?T3>(T1?item1,?T2?item2,?T3?item3){return?new?Tuple<T1,?T2,?T3>(item1,?item2,?item3);}public?static?Tuple<T1,?T2,?T3,?T4>?Create<T1,?T2,?T3,?T4>(T1?item1,?T2?item2,?T3?item3,?T4?item4){return?new?Tuple<T1,?T2,?T3,?T4>(item1,?item2,?item3,?item4);}public?static?Tuple<T1,?T2,?T3,?T4,?T5>?Create<T1,?T2,?T3,?T4,?T5>(T1?item1,?T2?item2,?T3?item3,?T4?item4,?T5?item5){return?new?Tuple<T1,?T2,?T3,?T4,?T5>(item1,?item2,?item3,?item4,?item5);}public?static?Tuple<T1,?T2,?T3,?T4,?T5,?T6>?Create<T1,?T2,?T3,?T4,?T5,?T6>(T1?item1,?T2?item2,?T3?item3,?T4?item4,?T5?item5,?T6?item6){return?new?Tuple<T1,?T2,?T3,?T4,?T5,?T6>(item1,?item2,?item3,?item4,?item5,?item6);}public?static?Tuple<T1,?T2,?T3,?T4,?T5,?T6,?T7>?Create<T1,?T2,?T3,?T4,?T5,?T6,?T7>(T1?item1,?T2?item2,?T3?item3,?T4?item4,?T5?item5,?T6?item6,?T7?item7){return?new?Tuple<T1,?T2,?T3,?T4,?T5,?T6,?T7>(item1,?item2,?item3,?item4,?item5,?item6,?item7);}public?static?Tuple<T1,?T2,?T3,?T4,?T5,?T6,?T7,?Tuple<T8>>?Create<T1,?T2,?T3,?T4,?T5,?T6,?T7,?T8>(T1?item1,?T2?item2,?T3?item3,?T4?item4,?T5?item5,?T6?item6,?T7?item7,?T8?item8){return?new?Tuple<T1,?T2,?T3,?T4,?T5,?T6,?T7,?Tuple<T8>>(item1,?item2,?item3,?item4,?item5,?item6,?item7,?new?Tuple<T8>(item8));} }

接下來看看如何創(chuàng)建和初始化 Tuple。

????????????var?listEmployee?=?new?List<Tuple<int,?string,?string>>{Tuple.Create(1,?"Joydip?Kanjilal",?"INDIA"),Tuple.Create(2,?"Michael?Stevens",?"USA"?),Tuple.Create(3,?"Steve?Barnes",?"USA"?)};

一旦你的 Tuple 創(chuàng)建并初始化好,你可以像迭代其他集合一樣迭代 Tuple,下面的代碼清單展示了如何去實現(xiàn)。

foreach?(Tuple<int,?string,?string>?tuple?in?listEmployee){Console.WriteLine(tuple.Item2);}

下面是完整的代碼清單展示了如何去 創(chuàng)建,初始化,迭代。

static?void?Main(string[]?args){var?listEmployee?=?new?List<Tuple<int,?string,?string>>{Tuple.Create(1,?"Joydip?Kanjilal",?"INDIA"),Tuple.Create(2,?"Michael?Stevens",?"USA"?),Tuple.Create(3,?"Steve?Barnes",?"USA"?)};foreach?(Tuple<int,?string,?string>?tuple?in?listEmployee){Console.WriteLine(tuple.Item2);}Console.Read();}

你也可以創(chuàng)建 嵌套的 Tuple,如下代碼所示:

static?void?Main(string[]?args){var?tuple?=?Tuple.Create(1,?"Joydip?Kanjilal",?new?Tuple<string,?string>("Hyderabad",?"India"));}

譯文鏈接:https://www.infoworld.com/article/3095242/how-to-work-with-a-tuple-in-c.html

總結(jié)

以上是生活随笔為你收集整理的如何使用 C# 中的 Tuple的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。