我個人的編碼風格屬於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