在Entity Framework查询中,new ClassName和new ClassName()有什么区别?

5

我希望能够使用Entity Framework从数据库中获取一些值。

我对以下问题存在疑惑:

在Entity Framework查询中,new ClassNamenew ClassName()之间的区别

代码1

 dbContext.StatusTypes.Select(s => new StatusTypeModel() { StatusTypeId = 
 s.StatusTypeId, StatusTypeName = s.StatusTypeName }).ToList();

代码 2

dbContext.StatusTypes.Select(s => new StatusTypeModel { StatusTypeId =    
  s.StatusTypeId, StatusTypeName = s.StatusTypeName }).ToList();

当我创建一个new StatusTypeModelnew StatusTypeModel()对象时,您可以看到变化。

  • 这两个查询都适用于我。但是我不知道代码1和代码2之间的区别。

2
https://dev59.com/EXA65IYBdhLWcg3wvhTi - jjj
1个回答

5
这与EF无关,这是C#语言的一个特性。当您使用 { ... } 声明类的属性时,您不需要告诉类的空构造函数将被调用。例如:
new StatusTypeModel() { StatusTypeId = s.StatusTypeId, ... }

与此完全相同:

new StatusTypeModel { StatusTypeId = s.StatusTypeId, ... }

性能方面没有差别。生成的中间语言(IL)是相同的。

然而,如果您不声明属性,必须像这样调用构造函数:

var x = new StatusTypeModel(); // brackets are mandatory
x.StatusTypeId = s.StatusTypeId;
...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接