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)
这简直就是没有合理的用例吗?
我的猜测:考虑以下情况:
int num;
(num) = foo;
Run Code Online (Sandbox Code Playgroud)
如果使用隐式int强制转换运算符foo定义解构函数out int,则在这种情况下应该调用它是不明确的
在这种特定情况下可能会出现编译错误,同时允许我猜测的一般情况,但是,正如您所提到的那样,没有用例并且语法会令人困惑,也许根本不允许它是有意义的