监视c#中的变量

本文关键字:变量 监视 | 更新日期: 2023-09-27 18:01:20

我想知道在c#中监视变量的最佳方法是什么。这不是用于调试的。我基本上希望程序本身在运行期间一直监视它的一个变量。为例。我试着观察_a是否小于0;如果是,则程序停止。

 _a = _b - _c; // (_b >= _c) 

所以_a的取值范围在[0 N]以内,其中N为正整数;我觉得最好的方法是启动一个线程来监视_a值。一旦它,那么我就应该回应。但我不知道如何实现它。有人有什么建议吗?如能提供一段简短的代码示例,将不胜感激。

监视c#中的变量

不要试图监视这个变量中的值,你可以让这个"变量"成为你的类的一个属性,或者甚至把它的访问权包装到一个设置值的方法中。

通过使用属性或方法,您可以将自定义逻辑注入属性设置器,它可以做任何事情,包括"停止程序"。

我个人认为,如果目标是停止程序,我会使用方法:

private int _a;
public void SetA(int value)
{
    if (value < 0)
    { 
        // Stop program?
     }
    _a = value;
}

然后调用:

yourClass.SetA(_b - _c);

我更喜欢方法的原因是它有一个明显的,戏剧性的副作用,并且期望属性设置器将是一个快速的操作。但是,从技术角度来看,属性设置器也可以工作得很好。

属性可以做同样的事情:

private int _a;
public int A
{
    get { return _a; }
    set
    {
        if (value < 0)
        {
            // Handle as needed
        }
        _a = value;
    }
}

最好的方法是用属性封装变量。

使用这种方法,您可以使用自定义逻辑扩展属性的setter,以验证值,记录变量的更改或通知(事件)您的变量/属性已更改。

 private int _a;
 public int MyA {
  get{
    return _a;
  }
  set {
    _a = value;
  }
 }

你应该看看Observer Pattern

参见。net 4.0中的Observer with IObserver(T)和c#中理解和实现Observer Pattern .