【问题标题】:Is there any simple way to check any class instance for modifications?有什么简单的方法可以检查任何类实例的修改吗?
【发布时间】:2012-09-14 06:01:48
【问题描述】:

假设我有这样的课程:

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

【问题讨论】:

标签: c# .net object compare instance


【解决方案1】:

【讨论】:

    【解决方案2】:

    添加额外的属性来保持对象的状态:

    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
    

    【讨论】:

      猜你喜欢
      • 2020-03-10
      • 2022-12-30
      • 1970-01-01
      • 2011-09-10
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多