同事的以下代码在尝试使用 VS 2008 编译时抛出以下错误:
错误:
A new expression requires () or [] after type
代码:
我的类结构:
public class MyClass
{
public MyClass() {}
public string Property1 { get; set; }
public string Property2 { get; set; }
}
示例源代码:
List<MyClass> x = new List<MyClass>();
x.Add(new MyClass
{
Property1 = "MyValue",
Property2 = "Another Value"
});
它“可以在我的机器上运行”,但不能在他的机器上运行。知道为什么吗?
更新
他的目标是 3.5 .NET 框架
他正在使用 System.Collections.Generics 命名空间
MyClass 对象确实有一个构造函数
更新 1:
@Funky81 - 你的例子和我的例子能够在我的电脑上编译。
更新 2:
示例中包含 MyClass 的架构
更新 3:
@DK - 我让我的同事将以下配置部分添加到他的应用程序中:
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="OptionInfer" value="true"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
</compilers>
</system.codedom>
他收到以下编译错误:无法识别的元素“providerOption”。
最佳答案
这是 VS.2008 中唯一相似但不完全相同的错误:
Compiler Error CS1526 : A new expression requires (), [], or {} after type
注意错误消息中的那些 {}
,它们是 c# 3.0 语法的一部分。这与框架版本无关,与语言版本有关。
我敢打赌,不知何故使用了不同版本的编译器。
补充:这看起来可能是 ASP.Net 的问题。要检查的地方在 .config 文件中,元素
configuration\system.codedom\compilers\compiler @language="c#..."
应该有
<providerOption name="CompilerVersion" value="v3.5"/>
关于c# - 类型编译错误后新表达式需要 () 或 [] - C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/389644/