为什么.NET中的这么多命名集合没有实现IEnumerable <T>?

Eri*_*rix 12 c# ienumerable

随机示例:

ConfigurationElementCollection
Run Code Online (Sandbox Code Playgroud)

.Net有很多这些WhateverCollection没有实现的IEnumerable<T>小类,这意味着我不能将Linq用于开箱即用的对象.甚至在Linq之前,你会认为他们会想要使用泛型(我相信它已经在C#2中一直被引入)

似乎我一直遇到这些讨厌的小集合类型.有一些技术原因吗?

Han*_*ant 7

答案在问题标题中:"命名集合".在泛型可用之前,您必须使集合类型安全的方式是什么.代码中有很多可以追溯到.NET 1.x,尤其是Winforms.没有合理的方法可以使用泛型来重写它们,这会破坏过多的现有代码.

因此,命名集合类型是类型安全的,但rub是System.Collections.IEnumerator.Current,类型为Object的属性.您可以使用OfType()或Cast()来Linqify这些集合.