2012-02-16 76 views
-2

如何比較C#中的對象。這裏是如何比較C#中的對象#

namespace MyService 
{ 
    public static class CurrentVCobj 
    { 
     public static string id { get; set; } 
     public static string Month { get; set; } 
     public static string Year { get; set; } 
    } 

    public static class ResponseVCObj 
    { 
     public static string id { get; set; } 
     public static string Month { get; set; } 
     public static string Year { get; set; } 
    } 
} 

我想在下面的方法將值分配給上述對象(CurrentVCobj和ResponseVCObj)然後比較(TRUE或FALSE)他們,看看他們是平等的我的代碼示例

public static void compareMethood(IEnumerable<tets> vc) 
{    
    var myvar = vc; 
    var mycac = rep.populateDict(); 

    foreach (var item in myvar) 
    { 
     ResponseVCObj.id = item.id; 
     ResponseVCObj.Month = DateRange.Month; 
     ResponseVCObj.Year = DateRange.Year; 

     CurrentVCobj.id = currentV.Select(d => d.Value.id).ToString() ; 
     CurrentVCobj.Month = currentV.Select(d => d.Value.Month).ToString(); 
     CurrentVCobj.Year = currentV.Select(d => d.Value.Year).ToString(); 

     //COMPARE OBJECTS HERE    
    } 
} 
+2

爲什麼對這些類型使用'static'?在比較對象與比較值時使用Object.Equals()與以a == b爲例 – BrokenGlass 2012-02-16 22:32:24

+0

@wade您對這些類的平等標準並不清楚。你是否想在'id','Month','year',對象引用,一些散列值? – MethodMan 2012-02-16 22:33:47

+0

@wade在這裏沒有意義 – kaveman 2012-02-16 22:36:26

回答

0

試試這個:

if (ResponseVCObj.Equals(CurrentVCobj)) 
{ 
    ... 
} 
else 
{ 
    ... 
} 
0

首先,有沒有你正在使用靜態類的原因嗎?你的示例代碼對我來說似乎非常奇怪。您對LINQ的使用似乎也不必要。

如果要通過除簡單引用檢查之外的其他對象比較兩個不同的對象,則需要覆蓋Equals方法。

的指南上可以在這裏找到: http://msdn.microsoft.com/en-us/library/ms173147(v=vs.80).aspx

+0

你可能沒有意識到有人在這裏提出問題的人是初學者 – Milligran 2012-02-16 22:51:00

+0

另外,我使用LINQ,因爲我從我的database.currentV提取數據從我的數據庫填充數據字典 – Milligran 2012-02-16 22:53:43

+0

我很抱歉,我不是故意聲音貶低。我只想讓你在繼續之前考慮修改這些問題。 – Dharun 2012-02-16 22:56:42

0

其他的答案是指出的是,你應該重寫object.Equals,那你應該刪除從類及其成員static修飾符正確。

此外,你應該考慮

  • 具有類都是從同一個接口
  • 具有類都是從同一個基類繼承的繼承;如果可能的話,那麼你可以在每個類或基類上實現IEquatable的基類
  • 中的相等比較;如果沒有共同的基本類型,那麼您可能需要在每種類型上執行兩次 - IEnumerable<CurrentVCobj>IEnumerable<ResponseVCObj>
  • 事實上,當您比較字符串的相等性時,結果可能因計算機而異,取決於文化該計算機上的設置。