【发布时间】:2019-04-09 08:54:04
【问题描述】:
是否可以这样做(或者我可能需要特定版本的 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 later
DoWrite(GetTuple());
【问题讨论】:
-
简短的回答是否定的,这不是 C# 内置的。
-
谢谢,我就是这么问的。
-
这里的答案和副本都依赖于更改委托签名以更符合您想要完成的任务,但是您在 Python 中找到的
*xxx参数解包不会存在于 C# 中。 -
但是,您可以,虽然我不推荐它,但使用这种方法:
triSum.DynamicInvoke(Enumerable.Range(0, tup.Length).Select(i => tup[i]).ToArray());我认为这仅适用于 .NET Core 2.x+,不适用于.NET 框架。 -
哦,真的很丑,正如我所说,我不会推荐它 :)
标签: c# tuples parameter-passing valuetuple