传递 ValueTuple 而不是参数

是否可以这样做(或者我可能需要特定版本的 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());


森栏
浏览 129回答 3
3回答

侃侃尔雅

是的,您可以使用Named ValueTuples C# 7.1,如果适合,甚至可以只使用本地方法Action<(int a, int b, int c)> triSum = t&nbsp;&nbsp; &nbsp;=> Console.WriteLine(t.a + t.b + t.c);triSum((1, 2, 3));或者只是作为本地方法void TriSum((int a, int b, int c) t)&nbsp; &nbsp;=> Console.WriteLine(t.a + t.b + t.c);TriSum((1, 2, 3));

www说

你可以这样做: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;

米脂

代码中有一些错误,简而言之如下: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 包)
打开App,查看更多内容
随时随地看视频慕课网APP