c# - 当我执行沮丧时实际上发生了什么?

标签 c# casting downcast

这究竟是如何工作的?

如果我有这个基类

public class BaseClass
{
    public int Value1 { get; set; }
    public int Value2 { get; set; }

    public BaseClass SimpleClone()
    {
        BaseClass result = new BaseClass();
        result.Value1 = this.Value1;
        result.Value2 = this.Value2;
        return result;
    }
}

还有这个子类

public class DerivedClass : BaseClass
{
    public bool Value3 { get; set; }

    public DerivedClass()
    {
        Value3 = true;
    }
}

如何将 BaseCast.SimpleClone() 向下转换为 anotherObj? Value3 会怎样? 虽然知道会发生什么是好事,但我也对为什么它以这种方式运作很感兴趣。

最佳答案

如果我理解正确,你的问题是当你执行以下操作时会发生什么

DerivedClass derived = (DerivedClass)baseObj.SimpleClone();

你试过吗?简单地说,它会导致 InvalidCastException,因为 BaseClass 不是 DerivedClass

我有answered a similar question here , 那应该把事情搞清楚了。

关于c# - 当我执行沮丧时实际上发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23591100/

相关文章:

c# - 选择合适的框架

c# - 如何从映射中忽略嵌套枚举

java - 需要帮助来理解 java 中的向下转型

Javascript 向下转型对象

c# - 从 DataGridView 和数据库中删除行

c# - 在单个 ftp 请求中创建一个包含子目录的目录?

c++ - 删除指向派生对象的基指针

将整数和 float 的字符串转换为 C 中的 float 组

python - 类名作为幂等类型转换函数

c++ - 是否可以将对象向下转换为未在 C++ 中定义额外变量或 vtable 的子类?