zoukankan      html  css  js  c++  java
  • 两个对象属性的比较

    两个对象的引用比较可以用Equal

    但是两个对象的属性比较就比较麻烦一些,写一个方法,仅供参考:

     1         public static bool PropertyEquals(object AObject1, object AObject2)
    2 {
    3
    4 if (object.ReferenceEquals(AObject1, AObject2)) return true; // 相同实例
    5 if (object.Equals(AObject1, AObject2)) return true; // 相同值
    6 if (AObject1 == null || AObject2 == null) return false; // 其中有空
    7
    8 PropertyInfo[] vPropertyInfos1 = AObject1.GetType().GetProperties();
    9 PropertyInfo[] vPropertyInfos2 = AObject2.GetType().GetProperties();
    10
    11 if (vPropertyInfos1.Length != vPropertyInfos2.Length) return false;
    12
    13 for (int i = 0; i < vPropertyInfos1.Length; i++)
    14 {
    15 if (vPropertyInfos1[i].GetType() != // 类型不相同
    16 vPropertyInfos2[i].GetType()) return false;
    17
    18 object vObject1 = vPropertyInfos1[i].GetValue(AObject1, null);
    19 object vObject2 = vPropertyInfos2[i].GetValue(AObject2, null);
    20
    21 if (vObject1 is Class2 && vObject2 is Class2)
    22 {
    23 if (PropertyEquals(vObject1, vObject2) == false)
    24 {
    25 return false;
    26 }
    27 }
    28 else if (vObject1 is List<Class2> && vObject2 is List<Class2>)
    29 {
    30 if ((vObject1 as List<Class2>).Count != (vObject2 as List<Class2>).Count)
    31 {
    32 return false;
    33 }
    34
    35 for (int j = 0; j < (vObject1 as List<Class2>).Count; j++)
    36 {
    37 if (PropertyEquals((vObject1 as List<Class2>)[j], (vObject2 as List<Class2>)[j]) == false)
    38 {
    39 return false;
    40 }
    41 }
    42 }
    43 else
    44 {
    45 if (!(object.ReferenceEquals(vObject1, vObject2) ||
    46 object.Equals(vObject1, vObject2))) return false;
    47 }
    48
    49
    50 }
    51 return true;
    52 }

    其中第21行和28行的判断是需要个性化的地方,适用的场合为类中调用其他的类或者List<>。
     

  • 相关阅读:
    Flex4中panel拖拽
    jquery两边飘浮的对联广告
    javascript 无刷新上传图片之原理
    第十二周--servlet做一个逻辑处理!!!!!!!!!!!!!实现登录
    第十一周--邮件系统补充一个注册一个登陆验证码
    第十周--邮件系统全套(第二版)
    第九周--邮件系统2(全套增删改查)
    第八周-邮件系统1
    第七周JSP增删改查
    JSP第六周 还是session
  • 原文地址:https://www.cnblogs.com/sshoub/p/2344966.html
Copyright © 2011-2022 走看看