你为什么不能只用一个值来构造一个元组?

Dre*_*kes 7 c# destructuring c#-7.0

在C#7中,显然不可能只用一个项目来构造一个元组.

ValueTuple<T1> 存在,所以不是因为那个.

向后兼容性意味着Deconstruct一个参数的方法也必须是合法的:

public void Deconstruct(out int i)
Run Code Online (Sandbox Code Playgroud)

那你为什么不写:

var (num) = foo;
Run Code Online (Sandbox Code Playgroud)

这简直就是没有合理的用例吗?

KMo*_*ssa 5

我的猜测:考虑以下情况:

int num;
(num) = foo;
Run Code Online (Sandbox Code Playgroud)

如果使用隐式int强制转换运算符foo定义解构函数out int,则在这种情况下应该调用它是不明确的

在这种特定情况下可能会出现编译错误,同时允许我猜测的一般情况,但是,正如您所提到的那样,没有用例并且语法会令人困惑,也许根本不允许它是有意义的