2

私はそのようなクラスを持っているとしましょう:

class Test
{
   string asd;
   int dsa;
}

後でこのクラスのインスタンスを作成すると、後でデータ メンバーの値が変更される可能性があります。
すべてのクラス メンバーを比較せずに単純な比較メソッドが必要です。
そんな感じ:

Test t = new Test();
t.asd = "asd";

SOMETHING SMTH = GetSOMETHINGof(t);

a.dsa = 3;

if (GetSOMETHINGof(t) != SMTH)
   //object modified

多分誰かがそのために使用できる組み込みのものを知っていますか? 私は Equal などを実装できることを知っていますが、それは私が望むものではありません。クラスが多すぎて、メンバーが多すぎます。
C# と .net 4.0 を使用しています

4

2 に答える 2

1

GregFinzer による.NETオブジェクト1.4.2.0の比較http://www.nuget.org/packages/CompareNETObjects

于 2012-09-14T06:29:17.477 に答える
1

オブジェクトの状態を維持するためにプロパティを追加します。

public class A
{
    public bool HasChanged { get; set; }

    object _Value;
    public object Value
    {
        get
        {
            return _Value;
        }
        set
        {
            HasChanged = value != _Value;
            _Value = value;
        }
    }

    public A(object _value)
    {
        _Value = _value;
        HasChanged = false;
    }
}

そしてそれを使用します:

        A a = new A(5);
        Console.WriteLine(a.HasChanged);  //false
        a.Value = 6;
        Console.WriteLine(a.HasChanged);  //true
        a.HasChanged = false;
        Console.WriteLine(a.HasChanged);  //false
于 2012-09-14T06:38:38.487 に答える