c# - c# 延迟加载中的自动属性是什么?

标签 c# lazy-loading

我读过一些关于 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/

相关文章:

c# - System.Threading.Timer 内部的方法

c# - C# 中的 SQL 批量复制/插入

c# - Asp.Net Core 3.1 中 MvcHtmlString.Create() 方法的等效项是什么?

c# - 我如何为 json 属性返回 null 而不是 "data": []

javascript - 为什么 jQuery 没有加载?

jquery - 延迟加载插件

c# - 如何在 WPF 中关注 ListviewItem?

nested - Angular 9 嵌套延迟加载模块,带有嵌套路由器导出

entity-framework - IValidatableObject 的 Validate 方法期间出现延迟加载问题

javascript - 动态加载图像