在c#延迟加载中是autoproperties?

Tho*_*asD 3 c# lazy-loading

我已经阅读了一些关于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)

谢谢托马斯

Ode*_*ded 5

自动属性只是获得编译器生成的支持字段.

所以这:

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)