【发布时间】:2012-01-21 04:49:35
【问题描述】:
在编译一些 C# 代码时,我得到了错误:
新的表达式在类型后需要 () 或 []
我的代码如下:
request.AddExtension(new ClaimsRequest {
Country = DemandLevel.Request,
Email = DemandLevel.Request,
Gender = DemandLevel.Require,
PostalCode = DemandLevel.Require,
TimeZone = DemandLevel.Require,
});
我正在使用 ASP.NET 2.0。
你能帮忙解释一下为什么会出现这个错误吗?
【问题讨论】:
-
您使用的是 .NET 2.0,因此您无法执行对象初始化程序。旁注,如果您使用的是 .NET 3.5,如果正在构造的类具有无参数构造函数,则无需提供 () 即可。
-
@StealthRabbi 这不是真的。如果您使用 C# 3.0(即 Visual Studio 2008),则可以在 .NET 2.0 中使用对象初始化程序。
-
@StealthRabbi 小注;对象初始化器是一个编译器特性;当面向 .NET 2.0 时,您仍然可以使用 C# 3.0;但是,here 的问题是涉及到 ASP.NET 2.0(可能配置为纯 2.0 模式),并且可能正在使用 2.0 编译器执行动态编译。
-
注意:如果您的服务器上有 .NET 3.5 或更高版本,您可能可以启用 3.0 编译器 - 请参阅:hanselman.com/blog/…
-
好的,所以编译器功能可以编译到指定的目标 .NET 框架。这是否适用于 .NET 4,因为它不是基于 3.5,因为 3.5/3.0 是基于 2?谢谢。
标签: c# visual-studio-2005 asp.net-2.0 object-initializers