Tag: any

为什么C#编译器在使用LINQ方法时会创建私有DisplayClass Any()以及如何避免它?

我有这个代码(整个代码并不重要,但可以在这个链接上看到): 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()吗?