c# - 构造函数和字段初始化执行顺序

标签 c#

<分区>

public class RegisterViewModel{
  public RegisterViewModel()
  {
      MaxDepartmentLevel = db.Settings.Find(1).MaxDepartmentLevel;
  }

  private ApplicationDbContext db = new ApplicationDbContext();
  public int MaxDepartmentLevel { get; set; }
}

这样安全吗?能不能保证db会在该行之前初始化

MaxDepartmentLevel = db.Settings.Find(1).MaxDepartmentLevel;运行?

也就是说,有字段初始化和构造函数的类的执行顺序是什么?

最佳答案

任何构造函数都会调用父构造函数,然后在执行其代码之前初始化成员变量。因此代码将起作用。

初始化顺序一般是:

  1. 调用this()时同类的成员变量或其他构造函数
  2. 父构造函数(在 this() 调用的情况下跳过)
  3. 提供的自定义代码

参见 https://msdn.microsoft.com/en-us/library/aa645606(v=vs.71).aspx

关于c# - 构造函数和字段初始化执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42016441/

相关文章:

c# - 如何将字节数组(SQL 服务器时间戳)转换为日期时间(C#)?

javascript - 跨语言字符串转义

c# - foreach 未初始化循环变量

c# - Identity Server 4 使用 IConfiguration 创建客户端

c# - 查找具有特定备用数据流的所有文件是否是存储自定义标签的有效方法?

c# - Linq 中的字母 GroupBy 有一个扭曲

c# - 使用方法切换 BorderStyle。 C#

c# - 在 asp.net 中等待 GetByteArrayAsync 不返回

C# Winform MySql 更新按钮错误(它更新所有记录)

c# - GUI task.wait 与控制台或线程池的死锁