用于检查修改状态的数据类型或数据结构?

时间:2016-05-09 18:48:04

标签: c# asp.net asp.net-mvc c#-4.0 data-structures

我正在寻找适当的数据结构或数据类型来检查分配给变量的值是否被修改。

例如,

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

在这里,我不想将变量存储为全局变量。我想检查一下是否修改过。我试图通过资源收集,但我找不到任何东西。任何建议或方向都会有很大帮助。我正在寻找与Microsoft C#兼容的数据类型/数据结构。

2 个答案:

答案 0 :(得分:0)

根据您的要求,以下内容应该有效。基本上,跟踪最初指定的值并与当前值进行比较。

public class ModifiableClass
{

    private readonly int _origValue;

    public int Value;


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

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

答案 1 :(得分: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