话说某天你写下这样的代码:
struct Foo
{
private int bar;
public int Bar
{
get { return bar;}
set { bar = value;}
}
public Foo(int val)
{
this.Bar = val;
}
}
结果,编译器不同意了:
fields must be fully assigned before control is returned to the caller
意思是控制流返回给调用者之前,字段必须完全赋值。
简单的说就是当this.Bar = val的时候,Foo的所有字段必须都初始化了。
那么,我们有两种解决方案:
第一:
struct Foo
{
private int bar;
public int Bar
{
get { return bar;}
set { bar = value;}
}
public Foo(int val)
{
this.bar= val;
}
}
或者:
struct Foo
{
private int bar;
public int Bar
{
get { return bar;}
set { bar = value;}
}
public Foo(int val):this()
{
this.Bar = val;
}
}
这样就没问题了,是吧。
{
private int bar;
public int Bar
{
get { return bar;}
set { bar = value;}
}
public Foo(int val)
{
this.Bar = val;
}
}
结果,编译器不同意了:
fields must be fully assigned before control is returned to the caller
意思是控制流返回给调用者之前,字段必须完全赋值。
简单的说就是当this.Bar = val的时候,Foo的所有字段必须都初始化了。
那么,我们有两种解决方案:
第一:
struct Foo
{
private int bar;
public int Bar
{
get { return bar;}
set { bar = value;}
}
public Foo(int val)
{
this.bar= val;
}
}
或者:
struct Foo
{
private int bar;
public int Bar
{
get { return bar;}
set { bar = value;}
}
public Foo(int val):this()
{
this.Bar = val;
}
}
这样就没问题了,是吧。