C#在方法内定义类出现Type or namespace expected错误如何解决
错误原因
C#确实支持在类内部定义嵌套类,但不支持在方法内部定义任何类型(包括类、结构体、枚举等)。
你给出的代码将Person类定义在了Main方法的代码块内,不符合C#语法规则:类型只能定义在命名空间、类、结构体的作用域下,不能定义在方法、属性等成员的执行代码块内,因此编译器抛出该错误。
修复方案
方案1:将类移到方法外部(作为嵌套类)
如果需要Person仅在Program类内部使用,可以把它挪到Program类的内部、所有方法的外部:
using System; public class Program { // 嵌套类定义位置 class Person { public string Name{ get; set; } } public static void Main() { Person person = new Person(); } }
方案2:将类移到Program类外部(作为顶级类)
如果Person需要被其他类访问,可以直接定义为和Program同级的顶级类:
using System; // 顶级类定义 class Person { public string Name{ get; set; } } public class Program { public static void Main() { Person person = new Person(); } }
补充:临时数据结构替代方案
如果你只是需要在方法内临时使用简单的数据结构,C# 7.0及以上版本可以用匿名类型或者值元组,不需要单独定义类:
public static void Main() { // 匿名类型示例 var person = new { Name = "测试" }; Console.WriteLine(person.Name); // 值元组示例 (string Name, int Age) person2 = ("测试2", 20); Console.WriteLine(person2.Name); }
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

