这是拼写错误吗? private _MyEntities =>新的MyEntities();

时间:2015-11-30 13:38:05

标签: c# entity-framework

我修复了一些继承代码中的错误。这是一个具有模块范围变量的类,它是一个Entity Framework DataContext。

问题是数据没有保存到数据库中。当我改变这个......

private _MyEntities => new MyEntities();

到此......

private _MyEntities = new MyEntities();

......一切正常。但我担心开发人员可能使用过' =>'由于某种原因我故意失踪。

这是一个错字还是应该做一些我不明白的事情?

提前致谢。

1 个答案:

答案 0 :(得分:4)

首先,两行都不会按原样编译。这两行必须是:

private MyEntities _MyEntities => new MyEntities();

private MyEntities _MyEntities = new MyEntities();

第一个示例是使用C#6语法使用表达式主体的readonly属性。它是在C#5及之前执行以下操作的简写:

private MyEntities _MyEntities { get { return new MyEntities(); } }

它与private MyEntities _MyEntities = new MyEntities()有三个不同之处:

  1. 只读。您的更改允许更改字段。这可以通过private readonly MyEntities _MyEntities = new MyEntities()解决。
  2. 该属性正在使用延迟加载。它仅在使用该属性时初始化。使用字段的新版本在创建对象时初始化。这可能是一个非常重要的变化;或者它可能没有任何效果,具体取决于调用MyEntities构造函数时发生的情况。
  3. 每次调用该属性都会创建一个MyEntities的新实例。您的字段替代方案将始终返回相同的MyEntities实例。这可能是写作者的故意,或者可能是潜在的错误。