Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как сравнить классы в C#?

Спартак Бендеров (SJBatya) Мыслитель (5041), на голосовании 5 месяцев назад
 using System;
public class A { }
public class B { }
public class Prog
{
public static void Main()
{
A class1 = new A();
B class2 = new B();
bool e = классы равны; //Что надо прописать, чтобы сравнить классы?
if (e)
{
Console.WriteLine("Классы равны!");
}
}
}
Голосование за лучший ответ
Лев Перфилов Просветленный (26074) 6 месяцев назад
 class A  
{
public static bool operator ==(A lhs, B rhs)
{
if (критерий равенства)
{
return true;
}
return false;
}
public static bool operator !=(A lhs, B rhs)
{
if (критерий неравенства)
{
return true;
}
return false;
}
}
class B
{
public static bool operator ==(B lhs, A rhs)
{
if (критерий равенства)
{
return true;
}
return false;
}
public static bool operator !=(B lhs, A rhs)
{
if (критерий неравенства)
{
return true;
}
return false;
}
}
По идее так
Jurijus Zaksas Искусственный Интеллект (445796) 6 месяцев назад
Реализовать интерфейс IEquatable.
Тогда можно будет стравнить ObjectOfClass1.Equals(ObjectOfClass2) и наоборот.
Александр Просветленный (21149) 6 месяцев назад
Это будет зависить от вашей задачи. Если вам нужно упращенное сравнение, то тогда перегрузки оператора operator будет достаточно. Если нужно более глубже, то тогда переопределяйте Equals и GetHashCode, что даст вам возможность использовать ваши классы в словарях или применять к ним LINQ-методы, такие как Contains или IndexOf.Ну и в идеале будет применить оба варианта.
Максим Искусственный Интеллект (213327) 6 месяцев назад
Что в твоем понимании равные классы? Если они являются абсолютной копией друг друга? Нет такого механизма. Да и ни к чему это.
Похожие вопросы