2012-02-16 121 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>
  • 事实上,当您比较字符串的相等性时,结果可能因计算机而异,取决于文化该计算机上的设置。