У меня есть этот код (весь код не важен, но его можно увидеть на эта ссылка):
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__DisplayClass0_0
, что замедляет производительность:
Как я могу избежать создания этого класса (его экземпляры и сбор мусора) при использовании метода Any
?
Почему компилятор С# создает этот класс и есть ли альтернатива Any()
, которую я могу использовать?