当同事尝试使用VS 2008对其进行编译时,以下代码将引发以下错误:
错误:
代码:
MyClass结构:
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-您的示例和我的示例能够在我的PC上编译。
更新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中唯一类似但不完全相同的错误:
请注意错误消息中的那些{}
,它们是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/