3

C# で変数を監視する最良の方法は何だろうと思っています。これはデバッグ用ではありません。私は基本的に、プログラム自体が実行中に変数の1つを常に監視することを望んでいます。例えば。_a が 0 より小さいかどうかを監視しようとしています。そうである場合、プログラムは停止します。

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

したがって、_a の範囲は [0 N] 以内です。ここで、N は正の整数です。_a 値を監視するスレッドを開始するのが最善だと思います。それができたら、私は応答する必要があります。しかし、私はそれを実装する方法がわかりません。誰にも提案はありますか?短いコード サンプルは高く評価されます。

4

3 に答える 3

5

この変数内の値を監視する代わりに、この「変数」をクラスのプロパティにすることも、値を設定するためのメソッドにアクセスをラップすることもできます。

プロパティまたはメソッドを使用することにより、カスタムロジックをプロパティセッターに挿入できます。これにより、「プログラムの停止」など、あらゆることが可能になります。

個人的には、プログラムを停止することが目標である場合は、次の方法を使用します。

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;
    }
}
于 2013-02-26T19:31:38.413 に答える
2

最良の方法は、変数をプロパティでカプセル化することです。

このアプローチを使用すると、カスタムロジックを使用してプロパティのセッターを拡張し、値を検証したり、変数の変更をログに記録したり、変数/プロパティが変更されたことを通知(イベント)したりできます。

 private int _a;

 public int MyA {
  get{
    return _a;
  }
  set {
    _a = value;
  }
 }
于 2013-02-26T19:33:28.440 に答える
0

を調べる必要がありますObserver Pattern

IObserver (T)を使用した .NET 4.0 の Observerおよび C# での Observer パターンの理解と実装 を参照してください。

于 2013-02-26T19:36:02.057 に答える