C#(.NET 6)中使用枚举声明静态变量报错的原因
问题原因及解决办法
你遇到的错误和枚举类型本身没关系,问题出在静态变量的声明位置——C#不允许直接在命名空间级别或者顶级语句块里声明static变量,所有静态成员必须放在类、结构体这类类型容器里面。
误区澄清
枚举类型完全可以作为静态变量的类型,你之前的错误不是因为用了MyEnvironment枚举,而是static变量的声明不符合C#的语法规则。
正确写法示例
比如在Program.cs里创建一个静态类来存放全局静态变量:
global using Models; // 用静态类包裹全局静态变量 public static class GlobalConfigs { public static MyEnvironment CurrentEnvironment = MyEnvironment.Development; }
之后你就可以在任何地方通过GlobalConfigs.CurrentEnvironment访问这个全局变量了。
为什么原来的写法报错
如果你的代码是直接在Program.cs的顶级语句里写了这样的代码:
global using Models; // 这种写法错误:顶级语句里的变量是局部变量,不能加static修饰符 static MyEnvironment CurrentEnvironment = MyEnvironment.Development;
这就会触发你看到的错误——顶级语句中的变量属于局部作用域,static修饰符只能用于类/结构体内部的成员,不能用于局部变量。
内容的提问来源于stack exchange,提问作者CribAd
相关产品推荐
相关产品推荐

