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