C#—元組

元組 概念:

1.使方法 可以返回多個返回值 而不需要借助 out ref 關(guān)鍵字。

2.使方法 可以返回多個返回值 而不需要借助 out ref 關(guān)鍵字,Tuple這個泛型類,可以允許我們返回多個參數(shù)恨旱。

1.基于 .Net4.0 框架的元組-Tuple:

創(chuàng)建一個元組 Tuple:

?1.? Tuple<string> test3 = new Tuple<string>("2");

2.? Tuple<string> test4 = Tuple.Create<string>("3");

3.?? Tuple<int, int, int, int, int, int, int, Tuple<int>> test3 = new Tuple<int, int, int, int, int, int, int, Tuple<int>>(1, 2, 3, 4, 5, 6, 7, new Tuple<int>(8));

示例1:

public static Tuple<string, string, string> GetFullName() => new Tuple<string, string, string>("first", "second", "third");

public static void OldTuple()

? ??????var fullName = GetFullName();

? ? ? ??Console.WriteLine(fullName.Item1);

? ? ? ? Console.WriteLine(fullName.Item2);

????????Console.WriteLine(fullName.Item3);

如此為一個元組 Tuple痕慢,由?fullName 接收來自GetFullName()函數(shù)所返回的值冈在,而這個返回值為Tuple<string, string, string>類型(泛型)

上方代碼 將獲得到的打印數(shù)據(jù)為 “first”瓷产、“second”比规、“third”。

優(yōu)點:此等 Tuple 可以不借助于 ref 和 out 參數(shù)從而返回出多個 多類型的數(shù)據(jù)拦英,這些數(shù)據(jù)被保存在一個元組中方便調(diào)用

缺點:由 Tuple 返回出的數(shù)據(jù)顯示方式單一 為上方所示的 以 Item1 2 3 作為Tuple中的數(shù)據(jù)下標(biāo)(只能這種方式取用)

示例2:

public static Tuple<int,string,int> ReturnOldTuple()

? ?????? int id = 6;

? ?????? string name = "王";

? ?????? int num = 50;

? ? ? ? ?return Tuple.Create(id, name, num); //創(chuàng)建返回對象 Tuple

public static void OldTuple()

? ??????Tuple<int,string,int> tuple = ReturnOldTuple();

? ?????? Console.WriteLine(tuple.Item1);

? ?????? Console.WriteLine(tuple.Item2);

? ?????? Console.WriteLine(tuple.Item3);

如此示例 打印獲得參數(shù)為6蜒什、王、50疤估, 可返回多個不同類型的數(shù)據(jù)灾常。

接收方式與上例不同,此次創(chuàng)建了一個新的 Tuple 類型對象用來接受 ReturnOldTuple() 函數(shù)中所返回的數(shù)據(jù)铃拇。 兩種方式 都可 任選其一钞瀑。

2.C#新特性ValueTuple 新元組

創(chuàng)建一個ValueTuple:

1. ValueTuple<int> test = new ValueTuple<int>();

2.? ValueTuple<int,string> test2 = ValueTuple.Create(2,"5");

3.在函數(shù)中可快速創(chuàng)建并返回 return(int ,string慷荔,double); 如 示例 2 中所示

示例1:

static (string First, string Second, string Third) GetFullNum() => ("first", "second", "third");

public static void NewValueTuple()

? ??????var fullnum = GetFullNum();

? ?????? Console.WriteLine(fullnum.First);

? ?????? Console.WriteLine(fullnum.Second);

? ?????? Console.WriteLine(fullnum.Third);

如此 打印獲得結(jié)果為:first雕什、second、third显晶。 可以看到在編寫中已經(jīng)去除了 Item 1 2 3 從而改為返回值中的元素名稱贷岸。

示例2:

public static (int id, string name, int num) ReturnNewValueTupleTwo()

? ?????? int id = 6;

????????string name = "王";

? ?????? int num = 50;

????????return (id, name, num);

? ? ? ? //return ValueTuple<int, string, int>(id, name, num); 方法二

? ??????//return ValueTuple.Create(id, name, num); 方法三

public static void NewValueTuple()

? ?????? (int id, string name, int num) valueTupleTwo = ReturnNewValueTupleTwo(); //應(yīng)該使用這種方法聲明的變量接受

? ??????//var valueTupleTwo = ReturnNewValueTupleTwo(); 方法二

????????Console.WriteLine(valueTupleTwo.id);

? ??????Console.WriteLine(valueTupleTwo.name);

? ?????? Console.WriteLine(valueTupleTwo.num);

如上 為第二種返回ValueTaple的方法,將獲得返回值:6磷雇、王偿警、50. 也可通過 .名稱?的方式獲得值。

上方案例種 通過三種方法返回ValueTuple 用兩種方法接受ValueTuple值唯笙。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末螟蒸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子崩掘,更是在濱河造成了極大的恐慌七嫌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件苞慢,死亡現(xiàn)場離奇詭異诵原,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)枉疼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門皮假,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人骂维,你說我怎么就攤上這事惹资。” “怎么了航闺?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵褪测,是天一觀的道長猴誊。 經(jīng)常有香客問我,道長侮措,這世上最難降的妖魔是什么懈叹? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮分扎,結(jié)果婚禮上澄成,老公的妹妹穿的比我還像新娘。我一直安慰自己畏吓,他們只是感情好墨状,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著菲饼,像睡著了一般肾砂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宏悦,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天镐确,我揣著相機(jī)與錄音,去河邊找鬼饼煞。 笑死源葫,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的派哲。 我是一名探鬼主播臼氨,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼芭届!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起感耙,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤褂乍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后即硼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逃片,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年只酥,在試婚紗的時候發(fā)現(xiàn)自己被綠了褥实。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡裂允,死狀恐怖损离,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情绝编,我是刑警寧澤僻澎,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布貌踏,位于F島的核電站,受9級特大地震影響窟勃,放射性物質(zhì)發(fā)生泄漏祖乳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一秉氧、第九天 我趴在偏房一處隱蔽的房頂上張望眷昆。 院中可真熱鬧,春花似錦汁咏、人聲如沸亚斋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伞访。三九已至,卻和暖如春轰驳,著一層夾襖步出監(jiān)牢的瞬間厚掷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工级解, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留冒黑,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓勤哗,卻偏偏與公主長得像抡爹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子芒划,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容