If:
class Car : Automobile
{}
我可以:
Car toyota = new Car();
Automobile tauto = (Automobile)toyota;
但如果我这样做tauto.GetType().Name
仍然会是Car.
是否可以执行强制转换,以便将类型永久更改为“汽车”(无需克隆对象)?
我试图克服的问题是,c# 中没有多重继承,我需要在一种方法中合并来自 2 个服务的对象(具有相同的签名),并返回一种类型。
不。如果不构建一个new汽车对象。
然而,也没有理由这样做。这里氏替换原则 http://en.wikipedia.org/wiki/Liskov_substitution_principle说任何Car
应该始终像对待Automobile
,并且用户的预期行为不应发生变化。
只要你正确设计你的类层次结构,使用Car
as an Automobile
应该总是完全可以接受的。
旁注:这是使用的部分原因Type.GetType()
不是检查类型的首选方法。使用更安全、更好is http://msdn.microsoft.com/en-us/library/scekt9xw(VS.71).aspx and as http://msdn.microsoft.com/en-us/library/cscsdfbt(VS.71).aspxC# 中的关键字。如果你检查的话它们会返回 truetauto is Car
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)