从List <T>获取特定类型的对象

Ada*_*dam 2 c# asp.net

我有一个控件列表,List<Control>我希望能够检查他们的类型.因为我的列表只包含Controls,所以执行typeof()不会让我太过分,我想能够询问是否List<Control>[0]是Checkbox,TextBox,Label等.

我如何找到列表中具有哪种特定类型的控件?

Jus*_*ner 5

您可以使用Object.GetType()方法:

var controls = new List<Control>();

// Add Controls

if(controls[0].GetType() == typeof(Checkbox))
{
    // I'm a checkbox
}
else if (controls[0].GetType() == typeof(TextBox))
{
    // I'm a TextBox
}
Run Code Online (Sandbox Code Playgroud)

...等等.

或者,如果您不介意也可能匹配您正在检查的控件的子项,则可以使用is运算符:

var controls = new List<Control>();

// Add Controls

if(controls[0] is Checkbox)
    // I'm a Checkbox or a child of Checkbox
else if (controls[0] is TextBox)
    // I'm a TextBox or a child of TextBox
Run Code Online (Sandbox Code Playgroud)