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 关注
- 125 浏览
添加回答
举报