用于在匿名内部声明属性的第三种语法是什么?

问题描述 投票:1回答:1

用于在匿名内部声明属性的第三种语法是什么?

我正在阅读通过C#通过CLR书。我遇到了以下摘录(1):

编译器支持two附加语法,用于在匿名类型中声明属性可以从变量中推断属性名称和类型:

String Name = "Grant";
DateTime dt = DateTime.Now;
// Anonymous type with two properties
// 1. String Name property set to Grant
// 2. Int32 Year property set to the year inside the dt
var o2 = new { Name, dt.Year }; 

尽管后面几段,作者提出了以下用于创建匿名类型(2)的语法:

// Define a type, construct an instance of it, & initialize its properties
var o1 = new { Name = "Jeff", Year = 1964 }; 

因此,从上面的两个摘录中,我得出一个结论,即有一种语法用于在匿名类型中声明属性,而对此还有两种其他语法。尽管书中介绍了其中一种附加语法,但我仍然看不到书中提供了第二种附加语法。

我听说过语法和第一个其他语法,我在应用程序中几次使用了它们。但是我不记得使用任何其他语法(这将是第三个语法)。

所有使我相信的是,实际上只有两种语法,而第三个语法(第二个附加语法)不存在。以上摘录只是本书中的一个错误:作者应该写过

...支持two其他...

此外,我在互联网上的第三种语法上也找不到任何东西。

所以,这只是一个错误还是我在这里错过了第三种语法?

c# syntax anonymous-types
1个回答
1
投票

documentation

您可以通过使用new运算符和对象初始化程序来创建匿名类型。

对象初始化程序的语法在here中进行了描述。这是这样的语法:

{ PropertyName = value, ... }

并返回匿名类型文档:

如果未在匿名类型中指定成员名称,则编译器将为匿名类型成员提供与用于初始化它们的属性相同的名称。

因此,只有一种语法:

new {[PropertyName =] value, ...}

PropertyName =部分是可选的,如果该值是属性。 (字段呢?)

[就像评论中所说的那样,用词不好。

© www.soinside.com 2019 - 2024. All rights reserved.