<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
작은 메모:
if 전달된 두 값은 dataRow에 있는 셀의 값입니다. 먼저 유형을 비교하십시오. 유형이 일치하는 경우
딥 카피 부분을 호출하십시오. 코드:
C# 엔터티 클래스 직렬화 및 역직렬화 1(XmlSerializer)
C# 엔터티 클래스 직렬화 및 역직렬화 Deserialization 2 (DataContractSerializer)
위는 C# 객체 비교(값 유형, 참조 유형) 내용입니다. 관련 내용은 PHP 중국어 홈페이지(m.sbmmt.com)를 주목해주세요!