传递 ValueTuple 而不是参数

Tro*_*acy 1 c# tuples parameter-passing 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
Run Code Online (Sandbox Code Playgroud)

更新:我的意思是传递元组而不是单独的参数。

public void DoWrite(string s1, string s2)
{
Console.WriteLine(s1+s2);
}
public (string,string) GetTuple()
{
//return some of them
}
//few lines later
DoWrite(GetTuple());
Run Code Online (Sandbox Code Playgroud)

AAA*_*ddd 6

是的,您可以使用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));
Run Code Online (Sandbox Code Playgroud)

或者只是作为本地方法

void TriSum((int a, int b, int c) t)
   => Console.WriteLine(t.a + t.b + t.c);

TriSum((1, 2, 3));
Run Code Online (Sandbox Code Playgroud)


Eni*_*ity 6

你可以这样做:

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);
Run Code Online (Sandbox Code Playgroud)

或者更简洁地说:

Func<(int a, int b, int c), int> triSum = x => x.a + x.b + x.c;
Run Code Online (Sandbox Code Playgroud)