tda*_*roy 7 c# generics constructor struct
使用此代码:
struct Foo<T1>
{
public T1 Item1 { get; private set; }
public Foo(T1 item1)
{
Item1 = item1;
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到这个错误:
在将控制权返回给调用者之前,必须完全分配自动实现的属性"Foo.Item1"的备份字段.考虑从构造函数初始化程序中调用默认构造函数.
我的问题是,为什么在Item1调用构造函数后属性没有完全赋值?
编辑:更改set为private set因为此问题与可变性无关.
Meh*_*dad 15
this()在这里添加:
public Foo(T1 item1) : this()
{
Item1 = item1;
}
Run Code Online (Sandbox Code Playgroud)
这是因为您正在分配属性,并且编译器无法推断该属性仅为变量赋值; 它可以在初始化实例之前执行其他操作,并且这是不允许的,因为结构可能具有垃圾数据.所以你必须首先使用默认构造函数初始化它,然后执行你想要的操作.
| 归档时间: |
|
| 查看次数: |
6151 次 |
| 最近记录: |