所有类都可以使用可变变量?

时间:2011-05-22 14:53:11

标签: c# variables global mutable

我正在用C#开发一个程序,需要一个可变的变量,可供我程序中的所有类使用。

例如,我想在程序启动时将其设置为默认值,例如false,然后在发生操作时将其更改为true。然后,当其他类读取它时,需要传达true值。

如何实现这一目标?

3 个答案:

答案 0 :(得分:2)

静态怎么样?:

public static class MyProps
{
    public static bool MyProp { get; set; }
}

在您的代码中:

MyProps.MyProp = true;

无需初始化,因为布尔值始终初始化为false

答案 1 :(得分:2)

三个选项:

  • 使其成为特定类型的实例变量,并确保每个类都可以访问同一个实例
  • 使其成为特定类型的静态变量
  • 介于两者之间:将其设为singleton type中的实例变量。

就个人而言,我赞成第一种与依赖注入相结合的方法 - 但想想真正需要了解哪些类。它是否真的你的程序中的每个类?

全局状态(通过静态变量)和单例使代码更难以测试。

另外,我肯定会把它变成私有变量并且有一个属性来访问它。

答案 2 :(得分:0)

听起来你需要某个类中的静态成员。

class MyClass {
  static bool ms_MyStatic = false;
}

...您可以在任何地方将其称为MyClass.ms_MyStatic。