C#中foreach遍历集合中 类型区分问题
来源:百度知道 编辑:UC知道 时间:2024/05/25 01:01:47
foreach (object var in students) //students是ArrayList对象
{
if (var is Person)
{
Person stups = (Person)var;
Console.WriteLine(stups.Name + "是Person类型");
stups.Show();//Person类中的一个方法,输出显示
}
else if(var is Student)
{
Student stusd = (Student)var;
Console.WriteLine(stusd.Name + "是Student类型");
stusd.Show();
}
}
现在的问题是:执行那个结果全部都是Person类型 Else语句块不能执行
就换了一下位置就OK额~!
-_-!我郁闷~!
我想起来了,我Student类是继承Person类的~!
{
if (var is Person)
{
Person stups = (Person)var;
Console.WriteLine(stups.Name + "是Person类型");
stups.Show();//Person类中的一个方法,输出显示
}
else if(var is Student)
{
Student stusd = (Student)var;
Console.WriteLine(stusd.Name + "是Student类型");
stusd.Show();
}
}
现在的问题是:执行那个结果全部都是Person类型 Else语句块不能执行
就换了一下位置就OK额~!
-_-!我郁闷~!
我想起来了,我Student类是继承Person类的~!
因为student 也是person嘛,所以全都是person喽
改一下
foreach (object var in students) //students是ArrayList对象
{
if(var is Student)
{
Student stusd = (Student)var;
Console.WriteLine(stusd.Name + "是Student类型");
stusd.Show();
}
else if (var is Person)
{
Person stups = (Person)var;
Console.WriteLine(stups.Name + "是Person类型");
stups.Show();//Person类中的一个方法,输出显示
}
这样就OK了