我怎样才能解构C#7中超出参数的值元组?

MaY*_*YaN 7 .net c# value-type c#-7.0

鉴于以下内容:

var dic = new Dictionary<string, (int, int)>()
{
    ["A"] = (1, 2)
};

dic.TryGetValue("A", out (int, int) value);
Run Code Online (Sandbox Code Playgroud)

我可以轻松地从value字典中删除,但是我如何解构它以获得每个单独的值,如下所示:

dic.TryGetValue("A", out var (left, right));
Run Code Online (Sandbox Code Playgroud)

M.k*_*ary 10

dic.TryGetValue("A", out var (left, right));

此语法尚不支持,将来可能会添加.参考


您可以像这样给出元组元素名称.

if(dic.TryGetValue("A", out (int left, int right) t))
{
    var (left, right) = (t.left, t.right);

    // use (left, right) or directly use (t.left, t.right)
}
Run Code Online (Sandbox Code Playgroud)

我想不出更短的语法,只是时间问题.c#7比以前发展得更快,所以你只需要等待.

  • 你可以用`out var t`缩短它,然后用`var(left,right)= t;`来分解它 (3认同)
  • 使用新的模式语法,您可以执行 `TryGetValue("A", out var t) &amp;&amp; t is var (left, right)` (3认同)