C# Web应用程序无法访问全局静态变量报错求助
报错原因
触发Qualify it with a type name instead错误的核心原因很简单:你写的Myvar是静态(static)属性。
C#里加了static修饰符的属性、字段、方法都归属于类本身,不属于你new出来的类实例,自然没法通过实例对象点出来访问,编译器才会提示你要用类型名(也就是类名)来限定访问。
解决方式
直接用DAL类的类名访问这个属性即可,不要用你创建的实例对象调用,参考写法:
// 以下是错误写法,会触发你遇到的报错 // DAL dalInstance = new DAL(); // dalInstance.Myvar = 100; // 正确写法:直接通过类名访问静态成员 DAL.Myvar = 100; int currentValue = DAL.Myvar;
可选调整方案
如果你原本的设计是每个DAL实例都持有独立的Myvar值,不需要全局共享,那直接把属性和对应后备字段的static修饰符删掉,改成普通实例属性就可以通过实例正常访问了,修改后的代码如下:
// 实例属性写法,可通过类实例访问 private int _myvar; public int Myvar { get { return _myvar; } set { _myvar = value; } }
额外提醒:在WebForm这类Web场景下用静态属性要谨慎,静态值是所有请求共享的,高并发下很容易出现数据串改的问题,如果不是明确要做全局缓存类的功能,不建议在数据访问层随便用静态属性存业务数据。
内容的提问来源于stack exchange,提问作者krishna manohar
相关产品推荐
相关产品推荐

