我已经阅读了一些关于c#中的延迟加载的内容,这可能看起来像一个非常基本的问题,但我想知道autoproperties是否是默认的延迟加载.例如.:
public Color MyColor { get; set; }
Run Code Online (Sandbox Code Playgroud)
或者我是否必须实现某些方面
private Color _color;
public Color MyColor
{
get
{
if(_color==null)
{
_color=new Color("red");
}
return _color;
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢托马斯
自动属性只是获得编译器生成的支持字段.
所以这:
public Color MyColor { get; set; }
Run Code Online (Sandbox Code Playgroud)
最终会像这样:
private Color _color;
public Color MyColor
{
get
{
return _color;
}
set
{
_color = value;
}
}
Run Code Online (Sandbox Code Playgroud)
所以它们不是懒惰的 - 你需要自己实现它.
您可以像这样实例化支持字段:
private Color _color = new Color("red");
Run Code Online (Sandbox Code Playgroud)
使用自动属性,您可以使用构造函数设置默认值:
// in the constructor:
MyColor = new Color("red");
Run Code Online (Sandbox Code Playgroud)