当我进行一次垂头丧气时会发生什么?

Kyl*_*ran 4 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

而这个孩子班

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

    public DerivedClass()
    {
        Value3 = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎么能向下转换BaseCast.SimpleClone()anotherObj?Value3会发生什么?虽然知道发生了什么是好的,但我也对它为什么这样工作感兴趣.

Sri*_*vel 5

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

DerivedClass derived = (DerivedClass)baseObj.SimpleClone();
Run Code Online (Sandbox Code Playgroud)

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

我在这里回答了类似的问题,这应该清楚了.