«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как правильно переопределить equals () и gethashcode () для метода LINQ, кроме () метода?

Как правильно переопределить equals () и gethashcode () для метода LINQ, кроме () метода?

Опубликовано в 2025-02-06
Просматривать:913

How to Properly Override Equals() and GetHashCode() for LINQ's Except() Method?

реализация equals () и gethashcode () Методы для пользовательских классов: Практический пример

переоценки Equals () и gethashcode () В пользовательских классах имеет решающее значение для обеспечения правильного сравнения объектов и хэширования. Эта статья демонстрирует правильный способ реализации этих методов для вашего класса рекомендации, чтобы включить его использование с помощью LINQ, кроме () Метода. (), вам необходимо предоставить пользовательскую реализацию, которая сравнивает объекты на основе их уникальных свойств. В вашем случае свойство ReformationID является подходящим идентификатором. Вот исправленная реализация:

public override bool equals (объект obj) { var item = obj как рекомендацияда; if (item == null) { вернуть ложь; } вернуть this.recommendationId.equals (item.recommendationId); }

реализация gethashcode ()

public override bool Equals(object obj)
{
    var item = obj as RecommendationDTO;

    if (item == null)
    {
        return false;
    }

    return this.RecommendationId.Equals(item.RecommendationId);
}

public переопределить int gethashcode () { вернуть this.recommendationId.gethashCode (); } ]

использование с linq, кроме ()

public override int GetHashCode()
{
    return this.RecommendationId.GetHashCode();
}

var list1 = new List { / * ... * /}; var list2 = новый список { / * ... * /}; var result = list1.excte (list2);

примечание:

обязательно проверьте на наличие нулевых значений и используйте правильный корпус для свойств и методов.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3