如何从对象列表中获取特定类型的对象

Ric*_*nho 1 c# generics casting

我有一个存储多个对象类型的集合,一个Textbox和一个Textblock,我这样声明:

List<object> textBoxCollection= new List<object>();
Run Code Online (Sandbox Code Playgroud)

但是,当我运行一个仅查找Textbox对象的foreach循环时,它会抛出一个invalidcastexception.我对foreach循环的假设是它只会对我调出的对象类型运行操作.我哪里错了?继承我的循环:

foreach (MyTextBox mtb in textBoxCollection)
{

    int number
    bool mybool = Int32.TryParse(mtb.Text, out number);

    if (mybool == false)
    {
        //some operation
    }
    else
    {
        //some other operation
    }
} 
Run Code Online (Sandbox Code Playgroud)

Jam*_*iec 11

您需要使用枚举将枚举范围缩小到正确的类型 OfType<T>()

foreach (MyTextBox mtb in textBoxCollection.OfType<MyTextBox>())
{ ... }
Run Code Online (Sandbox Code Playgroud)