从主类更改变量而无需实例化

时间:2019-11-07 09:06:15

标签: c# winforms

我正在尝试通过Status监视连接状态,该状态会自动更改表单上标签的文本。

这是我的主班课

private int _status;
public int Status
{
    get { return _status; }

    set
    {
        _status = value;
        if (_status == (int)ServerStatus.Disconnected)
        {
            statusLabel.Text = "Disconnected";
            statusLabel.ForeColor = Color.Red;
        }
        else
        {
            statusLabel.Text = "Connected";
            statusLabel.ForeColor = Color.Green;
        }
    }
}

我现在的问题是如何在不实例化主类的情况下从另一个类更改Status。 还是我的工作有更好的方法?

1 个答案:

答案 0 :(得分:0)

没有对该实例的引用,您将无法访问该实例属性。

要能够修改类类型的对象的属性,您需要通过引用其实例来访问该活动对象。

除非此属性是静态的,否则该类被实现为单例。

静态属性

public class MyClass
{
  static private int _status;
  static public int Status
  {
  }
}

MyClass.Status = 1;

在这种情况下,MyClass的所有实例都共享一个相同的_status值,这对于所有实例都是通用的,因此整个应用程序中只有一个_status。

MyClass可能是静态的,也可能不是静态的。

单人

public class MySingleton
{
  public readonly MySingleton = new MySingleton();

  private MySingleton()
  {
  }

  private int _status;
  public int Status
  {
  }
}

MySingleton.Instance.Status = 1;

在这种情况下,只允许该类的一个实例,因此整个应用程序中只有一个_status。

Difference between static class and singleton pattern?