gpt4 book ai didi

c# - 编译时未捕获转换错误

转载 作者:行者123 更新时间:2023-11-30 17:40:34 24 4
gpt4 key购买 nike

<分区>

我了解基类不能转换为派生类。我不明白的是为什么这在编译时没有被捕获?例如:

class GradeBook
{

}

class ProfessorGradeBook : GradeBook
{

}

class Program
{
static void Main(string[] args)
{
ProfessorGradeBook a = (ProfessorGradeBook)new GradeBook();
//shouldn't this be a compile time error?
}
}

我已经查看了关于 stackoverflow 的其他问题,但我仍然不明白为什么这会编译? ProfessorGradeBook a = (ProfessorGradeBook)new GradeBook(); 在任何情况下都不会成功(对吗?)那么为什么这是运行时错误而不是编译时错误?

编辑:

我已经知道为什么编译器永远不会捕获这个:

GradeBook a = new ProfessorGradeBook();
ProfessorGradeBook b = (ProfessorGradeBook)a;

在运行时,a 可以指向任何东西,所以编译器应该只信任你。我更关心为什么编译器永远不会捕捉到这个:

ProfessorGradeBook a = (ProfessorGradeBook)new GradeBook();

我想最合理的答案是 Eric Lippert 的第一条评论,特别是“绝大多数开发人员永远不会键入那行代码”,因此编译器团队从不担心会导致该错误。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com