Heim > Artikel > Backend-Entwicklung > C#-Objektvergleich (Werttyp, Referenztyp)
<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
Kleine Anmerkung:
Wenn die beiden übergebenen Werte die Werte von Zellen in dataRow sind, vergleichen Sie bitte zuerst die Typen und rufen Sie dann diese Methode auf, wenn die Typen konsistent sind
Teil mit tiefer Kopie des Codes:
Serialisierung und Deserialisierung der C#-Entitätsklasse 1 (XmlSerializer)
C#-Entitätsklassensequenz und Deserialisierung 2 (DataContractSerializer)
Das Obige ist der Inhalt des C#-Objektvergleichs (Werttyp, Referenztyp). Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!