Por que o compilador C # cria DisplayClass privado ao usar o método LINQ Any () e como posso evitá-lo?
Eu tenho esse código (o código inteiro não é importante, mas pode ser visto emesse link):
internal static class PlayCardActionValidator
{
public static bool CanPlayCard(...)
{
// ...
var hasBigger =
playerCards.Any(
c => c.Suit == otherPlayerCard.Suit
&& c.GetValue() > otherPlayerCard.GetValue());
// ...
}
}
Depois de abrir o código no descompilador (ILSpy), por exemplo, notei a existência da classe recém-criada<>c__DisplayClass0_0
pelo compilador C #:
Isso não seria um problema para mim se esse código não fosse crítico para o desempenho do sistema. Esse método é chamado milhões de vezes e o coletor de lixo está limpando esses<>c__DisplayClass0_0
instâncias que diminuem o desempenho:
Como evitar a criação dessa classe (suas instâncias e coleta de lixo) ao usar o métodoAny
método?
Por que o compilador C # cria essa classe e existe alguma alternativa deAny()
Eu posso usar?