C#: 匿名类型和属性名称

3

这两者之间有什么区别吗:

dataContext.People.Select(ø => new
{
     Name = ø.Name,
});

并且还有这个:

dataContext.People.Select(ø => new
{
     ø.Name,
});

?


这是什么 -> 'ø'?Phi? - Sandeep Datta
1
这是挪威字符,包括æ,ø和å。我通常使用ø来表示lambda,因为.NET或代码中没有其他以该字母开头的内容,这意味着Intellisense不会启动:) 另外,我认为这个字母使lambda看起来更好:p - Svish
哈哈,你本可以使用λ的。但我喜欢这种斯堪的纳维亚风格 ;-). - Toon Krijthe
λ 在我的键盘上不太容易输入 :p ø 紧挨着我的 L 键,所以用小指很容易输入 ;) - Svish
在我点击“添加评论”后,我才明白你使用λ是指Lambda... ,哈哈。但访问权限仍然很重要 :p - Svish
3个回答

6

它们是相同的;如果没有指定名称(并且右侧是简单成员访问),则假定现有成员的名称。名称仅在以下情况下必需:

  • 将名称更改为其他内容(例如Name = grp.Key
  • 给非成员访问表达式命名(例如Count = grp.Count()

从他的声誉来看,似乎他有一些实践经验 :p - Svish

1

不需要。第二种方法只是为您派生属性名称,实际生成的代码是相同的。


1
不,编译器会将匿名类型的属性命名为赋值语句右侧的同名。

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