繁体   English   中英

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

[英]What is a third syntax for declaring a property inside an anonymous?

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

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

编译器支持两种额外的语法来声明匿名类型中的属性,它可以从变量推断属性名称和类型:

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 }; 

因此,从上面的两段摘录中,我得出一个结论,即有一种语法用于在匿名类型中声明属性,另外还有两种用于此的语法。 虽然书中介绍了其中一种附加语法,但我仍然没有看到书中介绍了第二种附加语法。

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

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

... 支持额外的 ...

此外,我无法在互联网上的第三种语法中找到任何内容。

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

文档

您可以通过将 new 运算符与对象初始值设定项一起使用来创建匿名类型。

这里描述对象初始值设定项语法。 这是这样的语法:

{ PropertyName = value, ... }

回到匿名类型文档:

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

所以,只有一种语法:

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

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

就像评论中所说的那样,您的消息来源措辞不佳。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM