我有这样的代码(整个代码并不重要,但可以在此链接中查看):
internal static class PlayCardActionValidator
{
public static bool CanPlayCard(...)
{
// ...
var hasBigger =
playerCards.Any(
c => c.Suit == otherPlayerCard.Suit
&& c.GetValue() > otherPlayerCard.GetValue());
// ...
}
}
在使用反编译工具(例如ILSpy)打开代码后,我注意到了由C#编译器新创建的类<>c__DisplayClass0_0
的存在:
如果这段代码对系统性能不是至关重要,这对我来说不是问题。但是因为这个方法被调用了数百万次,垃圾回收器正在清理这些<>c__DisplayClass0_0
实例,从而降低了性能:
当使用 Any
方法时如何避免创建这个类(它的实例和它们的垃圾回收),是否有替代方案?
C#编译器为什么会创建这个类?是否有其他可替代的方法可以使用 Any()
方法?