C#語(yǔ)法新特性之元組實(shí)例詳解
1.元組(Tuple)
元組(Tuple)在4.0 的時(shí)候就有了,但元組也有些缺點(diǎn),如:
1)Tuple 會(huì)影響代碼的可讀性,因?yàn)樗膶傩悦际牵篒tem1,Item2.. 。
2)Tuple 還不夠輕量級(jí),因?yàn)樗且妙?lèi)型(Class),對(duì)于一個(gè)變量要使用一個(gè)類(lèi)型,有點(diǎn)太沒(méi)必要了。
源代碼如下:
// 摘要: // 提供用于創(chuàng)造元組對(duì)象的靜態(tài)方法。若要瀏覽此類(lèi)型的.NET Framework 源代碼,請(qǐng)參閱 Reference Source。 public static class Tuple { // 返回結(jié)果: // 一個(gè)元組,其值 (item1)。 public static Tuple<T1> Create<T1>(T1 item1); // 返回結(jié)果: // 一個(gè) 2 元組,其值 (item1, ,item2)。 public static Tuple<T1, T2> Create<T1, T2>(T1 item1, T2 item2); }
提供用于創(chuàng)造元組對(duì)象的靜態(tài)方法
備注:上述所指 Tuple 還不夠輕量級(jí),是從某種意義上來(lái)說(shuō)的或者是一種假設(shè),即假設(shè)分配操作非常的多。
C# 7 中的元組(ValueTuple)解決了上述兩個(gè)缺點(diǎn):
1)ValueTuple 支持語(yǔ)義上的字段命名,可以為每一個(gè)屬性名字自定義名稱(chēng).如(int first,int second) tuple=(1,2)。
2)ValueTuple 是值類(lèi)型(Struct)。
注:如果vs報(bào)沒(méi)有預(yù)定義類(lèi)型ValueTuple<...>的錯(cuò)誤時(shí),需要使用nuget命令導(dǎo)入: Install - Package System.ValueTuple
源代碼如下(ValueTuple<...>內(nèi)部原理):
public struct ValueTuple<T1, T2> : IEquatable<ValueTuple<T1, T2>>, IStructuralEquatable, IStructuralComparable, IComparable, IComparable<ValueTuple<T1, T2>>, ITupleInternal { public T1 Item1; public T2 Item2; int ITupleInternal.Size { get { return 2; } } public ValueTuple(T1 item1, T2 item2) { this.Item1 = item1; this.Item2 = item2; } }
總結(jié):元組的出現(xiàn)在一定程度上簡(jiǎn)化了面向?qū)ο?有些不必要或者很少使用的對(duì)象可以直接使用元組來(lái)返回,而不需要再通過(guò)類(lèi)型的方式去返回
以上所述是小編給大家介紹的C#語(yǔ)法新特性之元組實(shí)例詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
基于C#設(shè)計(jì)一個(gè)雙色球選號(hào)工具
這篇文章主要為大家詳細(xì)介紹了如何利用C#設(shè)計(jì)實(shí)現(xiàn)一個(gè)雙色球選號(hào)工具,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04C#判斷訪(fǎng)問(wèn)來(lái)源是否為搜索引擎鏈接的方法
這篇文章主要介紹了C#判斷訪(fǎng)問(wèn)來(lái)源是否為搜索引擎鏈接的方法,實(shí)例分析了C#解析URL來(lái)源的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03基于C#實(shí)現(xiàn)鼠標(biāo)設(shè)置功能
這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)鼠標(biāo)設(shè)置功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下2022-12-12C#抓取網(wǎng)絡(luò)圖片保存到本地的實(shí)現(xiàn)方法
下面小編就為大家分享一篇C#抓取網(wǎng)絡(luò)圖片保存到本地的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01C# GetMethod方法的應(yīng)用實(shí)例講解
GetMethod 是獲取當(dāng)前 Type 的特定方法,具有多個(gè)重載, GetMethod 即使用指定的綁定約束搜索指定方法,本文給大家介紹了C# GetMethod方法的應(yīng)用實(shí)例,需要的朋友可以參考下2024-04-04