C# 正在行驶的车辆c=新驾驶员();在C中#
假设我们有两类车和司机,C# 正在行驶的车辆c=新驾驶员();在C中#,c#,class,object,C#,Class,Object,假设我们有两类车和司机, 我们可以使物体像 Car c=new Driver(); 并且能够呼叫汽车类而非驾驶员类的成员为什么和何时 如果您确定汽车实际上是驾驶员,则可以将其转换为驾驶员,以访问驾驶员的成员。所以 ((Driver)c).DriverMember(); 如果c不是Driver 或 原因是由于c属于Car类型,因此只有Car的成员可用 例如,假设您有列表,其中添加了一些汽车对象和一些驾驶员对象。然后它给人一种完美的感觉,即只有汽车的成员才可以使用 此外,在这种情况下,我假设Dr
我们可以使物体像
Car c=new Driver();
并且能够呼叫汽车类而非驾驶员类的成员为什么和何时 如果您确定
汽车
实际上是驾驶员
,则可以将其转换为驾驶员
,以访问驾驶员
的成员。所以
((Driver)c).DriverMember();
如果c
不是Driver
或
原因是由于c
属于Car
类型,因此只有Car的成员可用
例如,假设您有列表
,其中添加了一些汽车
对象和一些驾驶员
对象。然后它给人一种完美的感觉,即只有汽车的成员才可以使用
此外,在这种情况下,我假设Driver
继承自Car
(这实际上是一种非常奇怪的继承,因为驾驶员不是汽车)。即使引用c
指向Driver
对象,引用的类型(Car
)确定可以对其调用哪些方法
作为旁注,将Driver
作为从Car
派生的类没有多大意义。类继承通常可以表示为“is-a”关系,大多数驱动程序不是汽车。在您的情况下,汽车是驱动程序的基类。这就是为什么您可以创建一个新的驾驶员对象,但将其“放入”汽车对象中
但是为什么只有“car”类的成员是可见的,你的对象c来自类型Car,而不是类型Driver,Car的成员比Driver少。试着发布更多的代码——没有更多的上下文很难帮助你。除非Driver
以某种方式继承了Car
(这没有意义),否则你怎么能创建这样的对象呢,我知道答案为什么,但我想知道为什么,什么时候可能?
Driver d = c as Driver;
if( d != null ){
d.DriverMethod();
}