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

Greg Finzer 比较 .NET Objects 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 回答