Почему компилятор 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()
Я могу использовать?