¿Por qué el compilador de C # crea DisplayClass privado cuando usa el método LINQ Any () y cómo puedo evitarlo?
Tengo este código (todo el código no es importante, pero se puede ver eneste enlace):
internal static class PlayCardActionValidator
{
public static bool CanPlayCard(...)
{
// ...
var hasBigger =
playerCards.Any(
c => c.Suit == otherPlayerCard.Suit
&& c.GetValue() > otherPlayerCard.GetValue());
// ...
}
}
Después de abrir el código en descompilador (ILSpy), por ejemplo, noté la existencia de una clase recién creada<>c__DisplayClass0_0
por el compilador de C #:
Esto no sería un problema para mí si este código no fuera crítico para el rendimiento del sistema. Este método se llama millones de veces y el recolector de basura está limpiando estos<>c__DisplayClass0_0
instancias que ralentizan el rendimiento:
¿Cómo puedo evitar crear esta clase (sus instancias y su recolección de basura) cuando uso elAny
¿método?
¿Por qué el compilador de C # crea esta clase? ¿Hay alguna alternativa deAny()
¿Puedo usar?