从c#中的继承类列表中获取对象

时间:2015-01-28 17:37:49

标签: c# list inheritance

我有一个基类型为T的对象列表,但它们都是不同的子类,比如T1,T2等继承自T。这个列表中每种类型都有一个对象。

如何从列表中获取T1类型的元素?

3 个答案:

答案 0 :(得分:4)

您可以使用Enumerable.OfType<T>之类的:

var itemsOfT1 = yourList.OfType<T1>();

如果您需要单个项目,请使用:

var itemOfT1 = yourList.OfType<T1>().FirstOrDefault();

请参阅:Enumerable.OfType<T>

  

根据指定的类型过滤IEnumerable的元素。

答案 1 :(得分:1)

你可以用List.OfType()来做到这一点。如下所示:Enumerable.OfType Method

答案 2 :(得分:1)

你可以这样做:

 T1 t1=null;
 foreach(var item in list)
  {
   if(item is T1)
   {
     t1 =item as T1;
     break;
   }
  }