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));

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;

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
上面代碼中的問題:
Action
是一個返回的函數委托void
,所以你應該使用Func
將參數傳遞給 Action 的方式使它們成為三個獨立的整數而不是元組
此外,語法 var tup = (1,2) 從 c# 7.0 開始,不能在舊版本中使用(雖然有一個 nuget 包)
- 3 回答
- 0 關注
- 161 瀏覽
添加回答
舉報