C#中的对象初始值设定项导致编译时错误

Ade*_*lam 4 c# visual-studio-2005 asp.net-2.0 object-initializers

编译一些C#代码时,我收到错误:

新类型表达式需要()或[]

我的代码如下:

request.AddExtension(new ClaimsRequest {
        Country = DemandLevel.Request,
        Email = DemandLevel.Request,
        Gender = DemandLevel.Require,
        PostalCode = DemandLevel.Require,
        TimeZone = DemandLevel.Require,
});
Run Code Online (Sandbox Code Playgroud)

我正在使用ASP.NET 2.0.

你能解释一下为什么会出现这个错误吗?

Dav*_*fer 6

除非您为C#3.0或更高版本编写,否则不能使用对象初始值设定项(new T { Property = value }).

不幸的是,对于pre-C#3.0,你需要做:

ClaimsRequest cr = new ClaimsRequest();
cr.Country = DemandLevel.Request;
cr.Email = DemandLevel.Request;
cr.Gender = DemandLevel.Require;
cr.PostalCode = DemandLevel.Require;
cr.TimeZone = DemandLevel.Require;
request.AddExtension(cr);
Run Code Online (Sandbox Code Playgroud)

这里有关于对象初始化器的更多信息.

告诉您正在使用的C#版本的最简单方法是查看您正在使用的Visual Studio版本.C#3.0与Visual Studio 2008捆绑在一起.

然而,你确实有一条"出路".在.NET 4.0之前但在.NET 2.0之后,所有新的语言和框架功能实际上只是位于CLR 2.0版之上的托管库.这意味着如果您下载C#3.0+编译器(作为后续框架的一部分),您可以针对该编译器编译代码.(在ASP.NET环境中这不是一件容易的事.)

  • @ user1099825 VS2005现在有很多版本; 这个名字有一个线索 - 现在是2012年(给予或需要几天),软件快速移动*....只是说' (2认同)