我想知道在 C# 中监视变量的最佳方法是什么。这不是为了调试。我基本上希望程序在运行期间始终监控其变量之一。例如。我正在尝试观察 _a 是否小于 0;如果是,则程序停止。
_a = _b - _c; // (_b >= _c)
所以 _a 的范围在 [0 N] 内,其中 N 是一些正整数;我觉得最好是启动一个监视_a值的线程。一旦它,那么我应该回应。但我不知道如何实现它。有人有什么建议吗?一小段代码示例将不胜感激。
我想知道在 C# 中监视变量的最佳方法是什么。这不是为了调试。我基本上希望程序在运行期间始终监控其变量之一。例如。我正在尝试观察 _a 是否小于 0;如果是,则程序停止。
_a = _b - _c; // (_b >= _c)
所以 _a 的范围在 [0 N] 内,其中 N 是一些正整数;我觉得最好是启动一个监视_a值的线程。一旦它,那么我应该回应。但我不知道如何实现它。有人有什么建议吗?一小段代码示例将不胜感激。
您可以将此“变量”设置为您的类的属性,或者甚至将它的访问权限包装到设置值的方法中,而不是尝试监视此变量中的值。
通过使用属性或方法,您可以将自定义逻辑注入到属性设置器中,它可以做任何事情,包括“停止程序”。
就个人而言,如果目标是停止程序,我会使用一种方法:
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;
}
}
最好的方法是用属性封装你的变量。
使用这种方法,您可以使用自定义逻辑扩展属性的设置器以验证值、记录变量的更改或变量/属性已更改的通知(事件)。
private int _a;
public int MyA {
get{
return _a;
}
set {
_a = value;
}
}
你应该调查一下Observer Pattern
。