Eri*_*ric 4 c# polymorphism casting
我想知道如何做到这一点,考虑以下类
public class Fruit
{
public string Name { get; set; }
public Color Color { get; set; }
}
public class Apple : Fruit
{
public Apple()
{
}
}
Run Code Online (Sandbox Code Playgroud)
我如何实例化一个新的水果,但转发到苹果,有没有办法实例化一堆水果,并使他们苹果与名称和颜色设置.我需要手动深层复制吗?
当然这失败了
Fruit a = new Fruit();
a.Name = "FirstApple";
a.Color = Color.Red;
Apple wa = a as Apple;
System.Diagnostics.Debug.Print("Apple name: " + wa.Name);
Run Code Online (Sandbox Code Playgroud)
我是否需要将Fruit传递给AppleCTor并手动设置名称和颜色(或1-n属性)是否有更好的设计来执行此操作?
在你的模型中,a Fruit不是Apple- 如果你想要一个Apple,实例化一个.或者,如果要创建Apple使用a Fruit作为起点,请为其创建一个Apple可以接受a 的构造函数Fruit.
您应该注意,继承层次结构中的中间类可实例化(非抽象)的对象模型通常是个坏主意.在某些情况下,这种等级可能是合适的 - 但我发现一般来说,它们比它们的价值更麻烦.好好的想清楚是否都Fruit 和 Apple需要是具体的和实例化.
| 归档时间: |
|
| 查看次数: |
2547 次 |
| 最近记录: |