我有下一个代码:
struct T
{
public T(int u)
{
this.U = 10; //Errors are here
}
public int U { get; private set; }
}
C# 编译器在指定行中给出了两个错误:
1) 在控制返回给调用者之前,必须完全分配自动实现的属性“TestConsoleApp.Program.T.U”的支持字段。考虑从构造函数初始值设定项调用默认构造函数。
2) 在将'this'对象的所有字段分配给之前,不能使用'this'对象
我做错了什么?帮助我理解。
来自 C# 规范:
10.7.3 自动实现的属性
当属性被指定为自动实现的属性时,
隐藏的支持字段自动可用于该属性,
并且访问器被实现来读取和写入
支持场。
[已删除]
由于支持字段不可访问,因此可以读取和写入
只能通过属性访问器,即使在包含类型中也是如此。
[已删除]
此限制还意味着结构类型的明确赋值
具有自动实现的属性只能使用
结构的标准构造函数,因为分配给属性
本身要求结构体被明确赋值。这意味着
用户定义的构造函数必须调用默认构造函数。
所以你需要这个:
struct T
{
public T(int u)
: this()
{
this.U = u;
}
public int U { get; private set; }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)