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 类型对象,因此直接强制转换 stuo 为 Student 类型将引发 InvalidCastException 异常。
演示代码改进:要避免此类错误,可以通过类型判断进行安全的转换操作:
foreach (Object stuo in students) {
if (stuo is Student stu) {
Console.WriteLine(stu.Name);
} else {
Console.WriteLine("非学生对象,跳过遍历。");
}
}
文件大小:6.71MB
评论区