C# 7 tuples and lambdas

前端 未结 4 1244
[愿得一人]
[愿得一人] 2020-12-15 02:36

With new c# 7 tuple syntax, is it possible to specify a lambda with a tuple as parameter and use unpacked values inside the lambda?

Example:

var list         


        
4条回答
  •  忘掉有多难
    2020-12-15 02:57

    As you have observed, for:

    var list = new List<(int,int)>();
    

    One would at least expect to be able to do the following:

    list.Select((x,y) => x*2 + y/2);
    

    But the C# 7 compiler doesn't (yet) support this. It is also reasonable to desire sugar that would allow the following:

    void Foo(int x, int y) => ...
    
    Foo(list[0]);
    

    with the compiler converting Foo(list[0]); to Foo(list[0].Item1, list[0].Item2); automatically.

    Neither of these is currently possible. However, the issue, Proposal: Tuple deconstruction in lambda argument list, exists on the dotnet/csharplang repo on GitHub, requesting that the language team consider these features for a future version of C#. Please do add your voices to that thread if you too would like to see support for this.

提交回复
热议问题