.NET 6实例化自定义类报CS0246类型或命名空间找不到
问题产生原因
.NET 6 控制台项目默认启用**顶级语句(Top-level Statements)**模板特性,你当前写在Program.cs里的实例化代码(没有显式声明Program类、Main方法的写法),最终会被编译器生成到全局命名空间下的隐式Program类中,并没有处于你自定义类所在的Ability_Score_Calculator命名空间范围内。
而你在.NET 5环境下使用的是旧版控制台模板,显式声明的Program类默认被包裹在Ability_Score_Calculator命名空间下,和AbilityScoreCalculator类同属一个命名空间,因此不需要额外引用就能直接实例化,不会触发CS0246错误。
.NET 6环境下的解决方法
你可以任选以下任意一种方式修复:
- 方法1:在Program.cs顶级语句的最顶部,添加自定义类所在命名空间的引用
using Ability_Score_Calculator; AbilityScoreCalculator calculator = new AbilityScoreCalculator(); - 方法2:实例化类时显式写全包含命名空间的完整类型名
Ability_Score_Calculator.AbilityScoreCalculator calculator = new Ability_Score_Calculator.AbilityScoreCalculator(); - 方法3:在Program.cs最顶部使用.NET 6支持的文件范围命名空间,将整个文件的代码纳入和自定义类相同的命名空间下
namespace Ability_Score_Calculator; AbilityScoreCalculator calculator = new AbilityScoreCalculator(); - 方法4:放弃顶级语句写法,改回.NET 5风格的显式结构,将Main方法包裹在
Ability_Score_Calculator命名空间下即可,代码和你提供的.NET 5环境下的Main方法代码完全一致就能正常运行。
内容的提问来源于stack exchange,提问作者George
相关产品推荐
相关产品推荐

