我读过一些关于 C# 延迟加载的文章,这似乎是一个非常基本的问题,但我想知道自动属性是否默认为延迟加载。例如:
public Color MyColor { get; set; }
或者我是否必须按照以下方式实现一些东西
private Color _color;
public Color MyColor
{
get
{
if(_color==null)
{
_color=new Color("red");
}
return _color;
}
}
谢谢 托马斯
最佳答案
自动属性只是获得编译器生成的支持字段。
所以,这个:
public Color MyColor { get; set; }
会变成这样:
private Color _color;
public Color MyColor
{
get
{
return _color;
}
set
{
_color = value;
}
}
所以它们不是惰性加载的——你需要自己实现。
您可以像这样实例化支持字段:
private Color _color = new Color("red");
使用自动属性,您可以使用构造函数设置默认值:
// in the constructor:
MyColor = new Color("red");
关于c# - c# 延迟加载中的自动属性是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8861533/