2010-06-09 38 views
8

"ClassA" adlı bir alt sınıfa ve "Class1" ve "Class2" iki alt sınıfa sahibim.foreach (alt sınıf) nesnesinin bir süper-sınıf listesinde görünmesi

"Class1" ve "Class2" nesnelerini içeren bir listem var, bu liste "ClassA" türündendir.
Ben

List<ClassA> AList = new List<ClassA>; 
AList.Add(new Class1()); 
AList.Add(new Class2()); 

foreach (Class1 c1 in AList) 
{ 
    // Do Something 
} 

gibi bir şey yaparak listede sadece "Sınıf1" nesneler içinde döngü istiyorum ama türde değil bir nesne ulaştığında kod bir istisna atar, bunu yaparken "Sınıf1 ".

Bu, listedeki nesnenin türünü kontrol etmek zorunda kalmadan nasıl basit bir şekilde yapılabilir ve doğru türse, bunu yayınlayabilirsiniz. Entities kullanarak

foreach (ClassA cA in AList) 
{ 
    if (cA.GetType() == typeof(Class1)) 
    { 
     // Do Something 
    } 
} 

cevap

12

: Eğer bir döngü içinde bir tür için kontrol etmek istiyorsanız, as ve is operatörleri bu içindir ki

foreach (Class1 c1 in AList.OfType<Class1>()) { } 

Not böyle. Gibi:

foreach (ClassA cA in AList) { 
    Class1 c1 = cA as Class1; 
    if (c1 != null) { 
    // do something 
    } 
} 
+0

Ben .NET 2.0 kullanmak zorunda ve "" seçeneği sonra LINQ – Amr

+0

kullanın kullanamaz. – Meligy

1
foreach(Class1 c1 in AList.OfType<Class1>()) 
{ 
    //do something 
} 
+0

.NET 2.0 kullanmalı ve LINQ kullanamıyorum – Amr

İlgili konular