C#列表,Foreach和类型

red*_*nal 0 c#

我想知道是否有一个foreach版本只检查特定类型并返回它.

例如,考虑这个类树:

org.clixel.ClxBasic - > org.clixel.ClxObject - > org.clixel.ClxSprite - > WindowsGame1.test

然后考虑这段代码

public List<ClxBasic> objects = new List<ClxBasic>();

foreach(GroupTester tester in objects)
{
    tester.GroupTesterOnlyProperty = true;
}
Run Code Online (Sandbox Code Playgroud)

tester.GroupTesterOnlyProperty是在GroupTester中创建的属性.有没有办法让像这样的工作,比如foreach的重载,或者另一个可能对我有帮助的片段?我希望程序员能够轻松地对列表进行排序,只获取他们需要的类型.

O. *_*per 8

您可以使用对象的OfType<T>扩展方法IEnumerable<T>.

你的循环可能如下所示:

foreach(GroupTester tester in objects.OfType<GroupTester>())
{
    tester.GroupTesterOnlyProperty = true;
}
Run Code Online (Sandbox Code Playgroud)

注意:这假定GroupTester继承自ClxBasic.