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

如何比较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赋值,然后在下面的方法中对它们进行比较或设置为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是从我的数据库中填充的数据字典我道歉,我并不是有意贬低别人。我只是想让你们在继续之前考虑修改这些问题。