C# 如何在C中比较对象
如何比较C中的对象。下面是我的代码示例C# 如何在C中比较对象,c#,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 stat
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赋值,然后在下面的方法中对它们进行比较或设置为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
}
}
试试这个:
if (ResponseVCObj.Equals(CurrentVCobj))
{
...
}
else
{
...
}
首先,使用静态类有什么原因吗?我觉得你的示例代码很奇怪。您对LINQ的使用似乎也没有必要 如果要通过简单的参照检查以外的方法比较两个不同的对象,则需要重写Equals方法 有关这方面的指南可在此处找到:
其他答案是正确的,注意您应该重写object.Equals,并且应该从类及其成员中删除静态修饰符 此外,你应该考虑 使类从同一接口继承 使这些类从同一基类继承;如果这是可能的,那么您可以在该基类中实现相等比较 在每个类或基类上实现IEquatable;如果没有通用的基类型,那么可能需要在每个类型上实现两次—IEnumerable和IEnumerable 事实上,在比较字符串是否相等时,不同计算机的结果可能不同,具体取决于该计算机上的区域性设置。
为什么对这些类型使用static?在这里,当比较对象和比较值时,使用Object.Equals vs(如果a==b)作为example@wade目前还不清楚你对这些课程的平等标准是什么。您是否试图比较id、月份、年份、对象引用和一些散列值?变量currentV来自何处?您可能没有意识到,这里提出问题的一些人是初学者。因此,我使用linq,因为我从数据库中提取数据。currentV是从我的数据库中填充的数据字典我道歉,我并不是有意贬低别人。我只是想让你们在继续之前考虑修改这些问题。