当前位置: 首页 > 编程语言 > C#

AfterTypeCompilationError,NewExpressionNeeds()or–C#分享

时间:2023-04-11 01:47:22 C#

AfterTypeCompilationError,NewExpressionNeeds()or–C#下面代码的同事在用VS2008编译时遇到如下情况抛出错误:错误:新表达式需要()或[]类型代码:MyClass结构:publicclassMyClass{publicMyClass(){}publicstringProperty1{get;放;}publicstringProperty2{得到;放;}}示例源代码:Listx=newList();x.Add(newMyClass{Property1="MyValue",Property2="另一个值"});它“在我的机器上工作”,但不是他的。你知道为什么吗?更新他的目标是3.5.NET框架他正在使用System.Collections.Generics命名空间MyClass对象确实有一个构造函数更新1:@Funky81-你的例子和我的例子在我的电脑上编译。更新2:示例更新3中包含MyClass的架构:@DK-我让我的同事将以下配置部分添加到他的应用程序中:他收到以下编译错误:无法识别的元素“providerOption”。这似乎是VS.2008中唯一类似但不完全相同的错误:编译器错误CS1526:新表达式需要()、[]或{}类型后注意错误消息中的那些{},它们是c#3.0语法的一部分.这与框架版本无关,与语言版本无关。我敢打赌以某种方式使用了不同版本的编译器。补充:这看起来像是ASP.Net可能存在的问题。要检查的地方是.config文件,元素configurationsystem.codedomcompilerscompiler@language="c#..."应该在我的电脑上有它给我错误的编译消息试试这个x.Add(newMyClass(){Property1="MyValue",Property2="另一个值"});请注意,在创建MyClass类之后还有另一个括号。他的项目是针对.NET3.5的吗?如果不是,则在x.Add(newMyClassline)上抛出该错误,因为新类没有指定构造函数或索引器。您确定您使用的是完全相同的代码吗?您提供的代码无法编译,因为它缺少MyClass的声明。请向我们提供完整的编译,而不仅仅是代码片段。然后将该文件发送给您的朋友,以确保您仍然可以在您的计算机上看到不同的行为。错误信息指向一行一列,对吧?告诉我们在哪里。你们都在同一个.NET服务包级别吗?今天被咬了,因为一台机器是.NET3.5RTM,一台是.NET3.5SP1。在.NET3.5SP1(也安装了.NET2.0SP2)中,他们为我在开发箱上使用的System.Web.Caching.Cache.Insert方法引入了一个新的重载,然后在中间预构建环境中失败:publicvoidInsert(stringkey,Objectvalue,CacheDependencydependencies,DateTimeabsoluteExpiration,TimeSpanslidingExpiration,CacheItemUpdateCallbackonUpdateCallback)花了几分钟时间来训练为什么这在一台机器上中断而不是另一台机器......更新:错误消息'新表达式需要()或[]在类型之后通常意味着您错过了构造函数括号。你确定你没有错过the()的那一行:Listx=newList();还是附近的某个地方?再次更新:我已经构建了以下内容:usingSystem;使用System.Collections.Generic;namespaceTest{publicclassMyClass{publicMyClass(){}publicstringProperty1{get;放;}publicstringProperty2{得到;放;}}classProgram{staticvoidMain(string[]args){Listx=newList();x.Add(newMyClass{Property1="Kev",Property2="Kev2"});}}}VS2008SP1目标3.5-为VS2008SP1目标3.0编译-为VS2008SP1目标2.0编译-为VS2008RTM编译-目标3.5-为VS2008RTM编译-目标3.0-为VS2008RTM编译-目标2.0-为VS2005编译-8.0.50727.867(在装有VS2008/3.5SP1的机器上)-失败:在类型“Test.MyClass.Property1.get”之后需要()或[]的新表达式必须声明一个主体,因为它没有标记为抽象或外部“测试”.MyClass.Property1.set'必须声明一个主体,因为它没有被标记为抽象或extern'Test.MyClass.Property2.get'必须声明一个文字,因为它没有被标记为抽象或extern'Test.MyClass.Property2.set'必须声明y因为它没有被标记为abstract或externVS2005-8.0.50727.762(在装有VS2008/3.5RTM的机器上)-失败:在输入'Test.MyClass.Property1.get'公式后必须声明()或[]的新表达式必须声明一个主体,因为它没有被标记为抽象或extern'Test.MyClass.Property1.set'必须声明一个主体,因为它没有被标记为抽象或extern'Test.MyClass.Property2.get'必须声明一个文字,因为它没有被标记为抽象或extern'Test.MyClass.Property2.set'必须声明一个主体,因为它没有标记为abstract或extern我倾向于认为问题不在于您提供的代码,除非提供上述代码或类似代码得到了编译错误示例的屏幕截图我是否有机会将事情归结为简单的事情以消除红鲱鱼?干杯Kev你的代码对我来说完美无缺。您确定该项目正在编译为3.5框架吗?从Project菜单中选择ProjectProperties,转到Application选项卡,然后查看TargetFramework下拉列表。他在使用System.Collections.Generic吗?在代码示例中的newMyClass后面添加“()”,或者从MyClass中删除空构造函数。以上就是C#学习教程:类型编译错误后,new表达式需要()或-C#分享的所有内容,如果对大家有用还需要详细了解C#学习教程,希望大家多多采纳多多关注——本文来自网络收藏,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: