关键词搜索

源码搜索 ×
×

C# 对象比较(值类型、引用类型)

发布2015-10-09浏览3200次

详情内容

  1. #region 引用对象比较
  2. /// <summary>
  3. /// 引用对象比较
  4. /// </summary>
  5. /// <param name="objA"></param>
  6. /// <param name="objB"></param>
  7. /// <returns></returns>
  8. public static bool CompareObject(object objA, object objB)
  9. {
  10. bool flag = false;
  11. if (objA == null || objB == null)
  12. {
  13. flag = false;
  14. }
  15. else if (objA == DBNull.Value && objB != DBNull.Value)
  16. {
  17. flag = false;
  18. }
  19. else if (objA != DBNull.Value && objB == DBNull.Value)
  20. {
  21. flag = false;
  22. }
  23. else if (objA == DBNull.Value && objB == DBNull.Value)
  24. {
  25. //objA objB 对应的列类型已经比较过 类型已判断 值一致
  26. flag = true;
  27. }
  28. else if (objA.GetType() != objB.GetType())
  29. {
  30. flag = false;
  31. }
  32. else if (objA is int || objA is short || objA is long || objA is float || objA is double || objA is decimal)
  33. {
  34. //int 01与1
  35. if (objA is int)
  36. {
  37. if ((int)objA == (int)objB)
  38. {
  39. flag = true;
  40. }
  41. }
  42. else if (objA is short)
  43. {
  44. if ((short)objA == (short)objB)
  45. {
  46. flag = true;
  47. }
  48. }
  49. else if (objA is long)
  50. {
  51. if ((long)objA == (long)objB)
  52. {
  53. flag = true;
  54. }
  55. }
  56. else if (objA is float)
  57. {
  58. if ((float)objA == (float)objB)
  59. {
  60. flag = true;
  61. }
  62. }
  63. else if (objA is double)
  64. {
  65. if ((double)objA == (double)objB)
  66. {
  67. flag = true;
  68. }
  69. }
  70. else if (objA is decimal)
  71. {
  72. if ((decimal)objA == (decimal)objB)
  73. {
  74. flag = true;
  75. }
  76. }
  77. }
  78. else
  79. {
  80. string strA = MetadataXmlSerializer<object>.ToXMLString(objA);
  81. string strB = MetadataXmlSerializer<object>.ToXMLString(objB);
  82. if (strA == strB)
  83. {
  84. flag = true;
  85. }
  86. }
  87. return flag;
  88. }
  89. #endregion


小注:

如果传入的两个值是dataRow中单元格的值,请先比较类型,类型一致再调用该方法

深拷贝部分代码:

C# 实体类序列化与反序列化一 (XmlSerializer)

C# 实体类序列化与反序列化二 (DataContractSerializer)

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载