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.
你能解释一下为什么会出现这个错误吗?
除非您为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环境中这不是一件容易的事.)