可能是重复问题:
C# 编译时和运行时的类型转换
据我理解,以下代码总是可以编译通过,并且在运行时由于抛出一个InvalidCastException
而总是会失败。
示例:
public class Post { }
public class Question : Post { }
public class Answer : Post
{
public void Fail()
{
Post p = new Post();
Question q = (Question)p; // This will throw an InvalidCastException
}
}
我的问题是...
- 如果我的假设是错误的,那么有人能举一个例子来说明它们错在哪里吗?
- 如果我的假设是正确的,那么为什么编译器不会警告这个错误呢?
p
没有被修改? - John Saunders