2016-05-09 4 views
2

私は、変数に割り当てられた値が変更されているかどうかをチェックするための適切なデータ構造またはデータ型を探しています。例えば変更された状態のチェックに使用するデータ型またはデータ構造

、ここで

int x = 0; 
    . 
    . 
    . 
    x = 2; 
    . 
    . 
    . 
    x = 0; 
    . 
    . 
    . 
    if (x = modified?) 

は、私がグローバルか何かのように変数を格納する必要はありません。私はその変更かどうかをチェックしたい。私は資源を集めようとしましたが、私は何も見つけることができません。どんな提案や指示も大いに役立ちます。私は、Microsoft C#と互換性のあるデータ型/データ構造を探しています。

+0

を読むことができます。 'Int32'のようなクラスでこの機能を見つけることはできません。 – dharms

+0

使用方法の説明はここでは説明するのがかなり複雑ですが、全体的な必要性が質問に概説されています。 – Josh

+0

@Joshなぜブータンプロパティと組み合わせたセッターでは不十分ですか? –

答えて

0

要件に基づいて、次のようなものが動作するはずです。基本的には、最初に割り当てられた値を追跡し、現在の値と比較します。

public class ModifiableClass 
{ 

    private readonly int _origValue; 

    public int Value; 


    public ModifiableClass(int initialValue) 
    { 
     _origValue = Value = initialValue; 
    } 

    public bool IsModified() 
    { 
     return Value != _origValue; 
    } 
} 
+0

私は少なくともそれを一般的なものに変更するだろう。 – Lunyx

+0

これは単なる例でしたが、これをより使いやすくするために、これを汎用に変換することができます。 – dharms

+0

これはまだグローバル変数を割り当てるのと同じように、それが変更されているかどうかを確認することです。 – Josh

0

多分これはあなたを助ける:

class Program 
{ 
    static void Main(string[] args) 
    { 
     Modifiable<int> modInt = new Modifiable<int>(5); 
     modInt.OnModified += (old, val) => { Console.WriteLine("Modified from {0} to {1}", old, val); }; 
     modInt.SetValue(4); 
     Console.ReadLine(); 
    } 
} 

class Modifiable<T> 
{ 
    private T _value; 
    public T Value { get { return _value; } } 
    public event Action<T,T> OnModified; 
    public void SetValue(T newValue) 
    { 
     var oldVal = _value; 
     _value = newValue; 
     OnModified?.Invoke(oldVal, _value); 
    } 
    public Modifiable(T value) 
    { 
     _value = value; 
    } 
    public override string ToString() 
    { 
     return Value?.ToString(); 
    } 
} 

また、あなたはこの年末の使用率がどうなるか知っていると便利かもしれ程度Observer pattern

関連する問題