亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

傳遞 ValueTuple 而不是參數

傳遞 ValueTuple 而不是參數

C#
森欄 2022-12-04 13:12:31
是否可以這樣做(或者我可能需要特定版本的 C#)?Function<int,int,int,int> triSum = (a,b,c) => {return a+b+c;};var tup = (1,2,3);triSum(tup); //passing one tuple instead of multiple args更新:我的意思是傳遞元組而不是單獨的參數。public void DoWrite(string s1, string s2){Console.WriteLine(s1+s2);}public (string,string) GetTuple(){//return some of them}//few lines laterDoWrite(GetTuple());
查看完整描述

3 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

是的,您可以使用Named ValueTuples C# 7.1,如果適合,甚至可以只使用本地方法


Action<(int a, int b, int c)> triSum = t 

   => Console.WriteLine(t.a + t.b + t.c);


triSum((1, 2, 3));

或者只是作為本地方法


void TriSum((int a, int b, int c) t)

   => Console.WriteLine(t.a + t.b + t.c);


TriSum((1, 2, 3));


查看完整回答
反對 回復 2022-12-04
?
www說

TA貢獻1775條經驗 獲得超8個贊

你可以這樣做:


Func<(int a, int b, int c), int> triSum = x => { return x.a + x.b + x.c; };


var tup = (1, 2, 3);


var sum = triSum(tup);

或者更簡潔地說:


Func<(int a, int b, int c), int> triSum = x => x.a + x.b + x.c;


查看完整回答
反對 回復 2022-12-04
?
米脂

TA貢獻1836條經驗 獲得超3個贊

代碼中有一些錯誤,簡而言之如下:


Func<Tuple<int,int,int>,int > triSum = a => { return a.Item1 + a.Item2 + a.Item3; };

Tuple<int,int,int> tup = new Tuple<int, int, int>(3,4,5);

triSum(tup); //passing one tuple instead of multiple args

上面代碼中的問題:

  1. Action是一個返回的函數委托void,所以你應該使用Func

  2. 將參數傳遞給 Action 的方式使它們成為三個獨立的整數而不是元組

  3. 此外,語法 var tup = (1,2) 從 c# 7.0 開始,不能在舊版本中使用(雖然有一個 nuget 包)


查看完整回答
反對 回復 2022-12-04
  • 3 回答
  • 0 關注
  • 161 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號