Почему компилятор C # создает закрытый DisplayClass при использовании метода LINQ Any () и как этого избежать?

У меня есть этот код (весь код не важен, но можно увидеть наэта ссылка):

internal static class PlayCardActionValidator
{
    public static bool CanPlayCard(...)
    {
        // ...
        var hasBigger =
            playerCards.Any(
                c => c.Suit == otherPlayerCard.Suit
                     && c.GetValue() > otherPlayerCard.GetValue());
        // ...
    }
}

Например, после открытия кода в декомпиляторе (ILSpy) я заметил существование вновь созданного класса<>c__DisplayClass0_0 компилятором C #:

Это не было бы проблемой для меня, если бы этот код не был критичным для производительности системы. Этот метод вызывается миллионы раз, и сборщик мусора очищает эти<>c__DisplayClass0_0 случаи, которые замедляют производительность:

Как я могу избежать создания этого класса (его экземпляров и их сбора мусора) при использованииAny метод?

Почему компилятор C # создает этот класс и есть ли альтернативаAny() Я могу использовать?

Ответы на вопрос(0)

Ваш ответ на вопрос