我个人的编码风格属于Enumerable.OfType<T>()
。我在任何地方都使用它,这有点意义。特别是IEnumerable<T>
允许威武linqToObject functionallity。我讨厌ObjectCollections的“类型不安全”循环如下面的样本。现在我有一些关于循环这些“UnGenericCollections”的问题。C#,objectCollection.OfType <T>()和foreach(T item in objectCollection),IEnumerable to IEnumerable <T>
ConfigurationSectionCollection
HttpModuleCollection
SPBaseCollection
SPFieldCollection
ArrayList
- 等等...
问题1:如果我转换这个ArrayList
到Enumerable<T>
有多大是与简单的foreach/IF-检查比较额外的循环?
var ark = new ArrayList();
ark.Add(new Human());
ark.Add(new Human());
ark.Add(new Animal());
代替:
foreach (object passenger in ark)
{
if (passanger is Human) { }
if (passanger is Animal) { }
}
我使用:
foreach (var human in ark.OfType<Human>())
{
}
foreach (var animal in ark.OfType<Animal>())
{
}
问题2:在foreach循环到一个不同类型的变量,铸造的哪种方式/转换将是用过的?这是一种语言功能还是可以直接使用的功能?
foreach (Human human in ark) { }
谢谢你忍受我可怕的英语。最好的问候,本杰明
编者提示:糟糕的英语已被纠正。 – Amy 2011-05-19 19:01:22