C# 一个参数不起作用的解构
我有一个班C# 一个参数不起作用的解构,c#,c#-7.0,C#,C# 7.0,我有一个班人: public class Person { public int Id { get; set; } public string Name { get; set; } public void Deconstruct(out int id) { id = Id; } } 当我试图用以下代码解构它时: var (id) = new Person(); 编者说: 无法推断隐式类型解构器变量“id”的类型 当有多个参数时,编译器不会这样说。像这样: public
人
:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public void Deconstruct(out int id) { id = Id; }
}
当我试图用以下代码解构它时:
var (id) = new Person();
编者说:
无法推断隐式类型解构器变量“id”的类型
当有多个参数时,编译器不会这样说。像这样:
public void Deconstruct(out int id, out string name) { id = Id; name = Name; }
var (id, name) = new Person();
解构需要至少两个变量来解构 否则,表达式
(id)=new Person()
将在正常赋值和解构赋值之间不明确
您还可以从代码给出的其他编译器错误中看到这一点:语法错误,“,”预期的
这是
在C#7.0中不支持解构为单个元素
不清楚为什么需要这样一种机制,因为您可以简单地访问属性或编写转换运算符来实现相同的功能
从概念上讲,一个元素的元组就是一个元素(不需要元组来保存它)。所以没有元组语法(使用括号表示法)来促进这一点(更不用说它在语法上是不明确的)。解构主义也是如此
以下是我能找到的最相关的LDM注释:(零和一元素元组和解构)
在未来的一些递归模式场景中,这种解构可能是允许的,但还没有最终确定。理解,也许以后,编译器会在使用一个参数创建它时向您提供建议,而不是在使用它时。@JosbelLuna:
解构()没有什么问题
一个参数的方法;它不能与解构语法一起使用。