我有一个抽象类(Object2D)和几个继承Object2D的类(例如DisplayObject2D)
我使用List来存储对这些对象的所有引用.
我想遍历此List中的每个DisplayObject2D.
到目前为止,以下代码正在运行,但对C#开发不熟悉,我想知道是否有更好的做法:
List<Object2D> tmp = objects.FindAll( delegate( Object2D obj )
{ return obj is DisplayObject2D; } );
foreach( DisplayObject2D obj in tmp )
{
...
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
Geo*_*voy 13
var objects2d = objects.OfType<DisplayObject2D>();
Run Code Online (Sandbox Code Playgroud)
如果你想要一个IEnumerable
var listOfObjects2d = objects2d.ToList();
Run Code Online (Sandbox Code Playgroud)
如果你想要一个List
请注意,OfType将为您提供更具体的类型
IEnumerable<DisplayObject2D>
Run Code Online (Sandbox Code Playgroud)
如果它不是您所期望的,请使用Cast扩展将其强制转换为可枚举的基类型.
var listOfObjects2dFilteredByMoreSpecificType =
objects.OfType<DisplayObject2D>.Cast<Object2D>()
//.ToList() // until you really need an IList<T> better leave it just an enumerable
;
Run Code Online (Sandbox Code Playgroud)