在 C# 中将对象转换为子类

rez*_*eza 5 c# oop subclass

我还没有找到关于 C# 的帖子。有什么办法可以做到这一点吗..

class parent {
    public parent() { }
}

class child : parent {
    public child() { }
}

class Program {
    static void Main(string[] args) {
        parent p = new parent();
        child c = (child)p;  
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要这样做的原因是向通过调用函数创建的对象添加一些方法(UIGraphics.GetCurrentContext())

Nol*_*nar 6

你不能那样做。

考虑这个例子:

class Fruit {
    // bla
}

class Banana : Fruit {
    // bla
}
Run Code Online (Sandbox Code Playgroud)

以下情况是不可能的

Fruit f = new Fruit();
Banana b = (Banana)f;
Run Code Online (Sandbox Code Playgroud)

因为并非所有水果都是香蕉


Ste*_*eve 3

这是不可能的。多态性在另一个方向上起作用——使用派生类,就好像它是更通用的父类一样。

但是,可以向现有类添加方法。这称为扩展方法。然而,它将被添加到它所要扩展的类的所有实例中。