<pre class="csharp"><pre class="csharp"> #region 引用对象比较 /// <summary> /// 引用对象比较 /// </summary> /// <param name="objA"></param> /// <param name="objB"></param> /// <returns></returns> public static bool CompareObject(object objA, object objB) { bool flag = false; if (objA == null || objB == null) { flag = false; } else if (objA == DBNull.Value && objB != DBNull.Value) { flag = false; } else if (objA != DBNull.Value && objB == DBNull.Value) { flag = false; } else if (objA == DBNull.Value && objB == DBNull.Value) { //objA objB 对应的列类型已经比较过 类型已判断 值一致 flag = true; } else if (objA.GetType() != objB.GetType()) { flag = false; } else if (objA is int || objA is short || objA is long || objA is float || objA is double || objA is decimal) { //int 01与1 if (objA is int) { if ((int)objA == (int)objB) { flag = true; } } else if (objA is short) { if ((short)objA == (short)objB) { flag = true; } } else if (objA is long) { if ((long)objA == (long)objB) { flag = true; } } else if (objA is float) { if ((float)objA == (float)objB) { flag = true; } } else if (objA is double) { if ((double)objA == (double)objB) { flag = true; } } else if (objA is decimal) { if ((decimal)objA == (decimal)objB) { flag = true; } } } else { string strA = MetadataXmlSerializer<object>.ToXMLString(objA); string strB = MetadataXmlSerializer<object>.ToXMLString(objB); if (strA == strB) { flag = true; } } return flag; } #endregion
Petite note :
Si les deux valeurs transmises sont les valeurs des cellules de dataRow, veuillez d'abord comparer les types, puis appeler cette méthode si les types sont cohérents
Partie de copie approfondie du code :
Sérialisation et désérialisation de classe d'entité C# 1 (XmlSerializer)
Séquence de classe d'entité C# et désérialisation 2 (DataContractSerializer)
Ce qui précède est le contenu de la comparaison d'objets C# (type de valeur, type de référence pour). Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !