【发布时间】:2014-09-10 09:07:30
【问题描述】:
我需要一些关于继承和转换的帮助:
public Class1 { public int myVar1;}
public Class2 : Class1 { public int myVar2;}
public void MyMethod(){
Class1 myC1 = new Class1() { myVar1 = 10;}
Class2 myC2 = new Class2() { myVar2 = 15;}
// What i should do here to achieve next
Console.WriteLine(myC2.myVar1); // myVar1 = 10
}
我想做的是从myC2获取10的myVar1值,这样当我调用myC2.myVar1时它是10,当我调用myC2.myVar2时它是15
有可能实现吗?
【问题讨论】:
-
不确定我明白你想要什么。
myC1和myC2是两个不同的实例(它们不共享字段)。如果您希望myC2.myVar1为 10,则必须将其分配到某个位置:myC2.myVar1 = 10;或myC2.myVar1 = myC1.myVar1;。我也不明白这与向下转换有什么关系。 -
Class1 是 Class2 的基类,当我为基类实例赋值时,我应该如何转换为派生类,以便派生类保留这个值
-
您不能将基类分配给派生类。考虑
Cat x = new Mammal()它不会起作用,因为它不是是一只猫。但是,您可以将派生类分配给基类Mammal y = new Cat(),因为它是 哺乳动物,然后您可以将其分配给Cat x = (Cat)y之后的派生类;因为它是一只猫。我们必须显式地强制转换(将类型名称放在括号中),因为它是一个缩小的强制转换,如果例如Cat x = (Cat)(new Dog())有效但不起作用,因为 Dog 不是 Cat。 -
解释清楚,谢谢;)
标签: c# class inheritance