【问题标题】:Mutable variable available to all classes?所有类都可用的可变变量?
【发布时间】:2011-05-22 14:53:11
【问题描述】:

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

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

如何做到这一点?

【问题讨论】:

  • 我是 C# 新手 - 我的问题是我无法弄清楚如何访问我在 Program 类中声明的静态变量。事实证明,Program.myVar 很简单。呵呵!

标签: c# variables global mutable


【解决方案1】:

静态的怎么样?:

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

在您的代码中:

MyProps.MyProp = true;

不需要初始化,因为布尔值总是初始化为false

【讨论】:

    【解决方案2】:

    三个选项:

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

    就我个人而言,我倾向于第一种方法与依赖注入结合使用——但请考虑哪些类真正需要了解这一点。它真的是你程序中的每个类吗?

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

    另外,我肯定会把它设为私有变量并拥有一个可以访问它的属性。

    【讨论】:

      【解决方案3】:

      听起来您需要在某个类的某个地方添加一个静态成员。

      class MyClass {
        static bool ms_MyStatic = false;
      }
      

      ...你可以在任何你喜欢的地方引用它作为 MyClass.ms_MyStatic。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-30
        • 1970-01-01
        • 1970-01-01
        • 2015-09-20
        • 2022-08-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多