C# 物件比較(值型別、引用型別)
#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
小注:
如果傳入的兩個值是dataRow中單元格的值,請先比較型別,型別一致再呼叫該方法
深拷貝部分程式碼:
相關文章
- c#:值型別&引用型別C#型別
- C#的型別——值型別與引用型別C#型別
- 【C#之值型別vs引用型別】C#型別
- C#變數型別(1):引用型別和值型別 (轉)變數型別
- C# 泛型 引用型別約束 值型別約束C#泛型型別
- 值型別和引用型別型別
- 值型別與引用型別型別
- JavaScript值型別和引用型別JavaScript型別
- Swift值型別和引用型別Swift型別
- C#學習筆記之值型別與引用型別C#筆記型別
- 值型別與引用型別的區別型別
- JavaScript - 基本型別與引用型別值JavaScript型別
- C#程式設計引用型別和值型別 以及引用傳遞和值傳遞C#程式設計型別
- 圖解C#的值型別,引用型別,棧,堆,ref,out圖解C#型別
- Structs vs classes(值型別vs引用型別)Struct型別
- c#中值型別和引用型別的區別C#型別
- C#引用型別和值型別在堆、棧中的儲存C#型別
- 時間物件、引用型別物件型別
- 區別值型別資料和引用型別資料型別
- Swift 中的值型別與引用型別使用指北Swift型別
- 從賦值看基本型別和引用型別的區別賦值型別
- Python引用型別和值型別的區別與使用Python型別
- php型別比較表PHP型別
- Java Integer型別比較Java型別
- javascript原始值和引用值型別及區別JavaScript型別
- 基本資料型別和引用型別的初始值資料型別
- JavaScript引用型別-Object型別JavaScript型別Object
- 引用型別型別
- Hellow C# unity學習記錄(7)值型別引用型別以及引數傳遞C#Unity型別
- 33 個 JavaScript 核心概念系列(二): 值型別與引用型別JavaScript型別
- JavaScript 值型別和引用型別在堆疊中的存放JavaScript型別
- 《JavaScript物件導向精要》之一:基本型別和引用型別JavaScript物件型別
- mysql字元型別varchar()比較MySql字元型別
- php中物件是引用型別嗎?PHP物件型別
- ECMAScript 原始型別與引用型別型別
- javascript基本型別 引用型別 基本包裝型別JavaScript型別
- js基本型別和引用型別區別JS型別
- JAVA 基本型別與 引用型別區別Java型別