C# 类型安全MySchool 项目中的 Teacher 对象操作与遍历问题

类型安全1:在 MySchool 项目中新增一个 Teacher 类并创建 Teacher jacky = new Teacher("成龙龙", 4);,通过 jacky.SayHi(); 方法让 Teacher 对象打招呼。随后将 jacky 添加到 students 集合:students.Add(jacky);。在执行遍历时,代码如下:

foreach (Object stuo in students) {
    Student stu = (Student)stuo;
    Console.WriteLine(stu.Name);
}

是否能够加入 Teacher 对象?可以,但 在遍历集合时会发生错误。在代码中,students 集合被假设为仅包含 Student 类型对象,因此直接强制转换 stuoStudent 类型将引发 InvalidCastException 异常。

演示代码改进:要避免此类错误,可以通过类型判断进行安全的转换操作:

foreach (Object stuo in students) {
    if (stuo is Student stu) {
        Console.WriteLine(stu.Name);
    } else {
        Console.WriteLine("非学生对象,跳过遍历。");
    }
}
ppt 文件大小:6.71MB