You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:54:03