您好,我想知道是否有其他方法可以自动执行此操作
if (currentWeapon is MeleeWeapon)
Fire(currentWeapon as MeleeWeapon);
else if (currentWeapon is GunWeapon)
Fire(currentWeapon as GunWeapon);
else if (currentWeapon is MachineGun)
Fire(currentWeapon as MachineGun);
所有调用的方法都像这样重载:
void Fire(MeleeWeapon weapon)
void Fire(GunWeapon weapon)
void Fire(MachineGun weapon)
答案 0 :(得分:3)
你正在以其他方式进行...而你所有的Fire()
方法可能应该采用如下的基本表示,然后在你的特定方法中你可以相应地投射它
void Fire(BaseWeapon weapon)
此外,如果你已经提前知道了这个类型,那么你可以简单地说if
条件,而不是 Fire((MeleeWeapon)currentWeapon);
条件
In [21]: df
Out[21]:
col1 col2
0 04-APR-2018 11:04:29 2018040415203
In [22]: pd.to_datetime(df.col1)
Out[22]:
0 2018-04-04 11:04:29
Name: col1, dtype: datetime64[ns]
In [23]: pd.to_datetime(df.col2, format="%Y%m%d%H%M%S")
Out[23]:
0 2018-04-04 15:20:03
Name: col2, dtype: datetime64[ns]
答案 1 :(得分:3)
您可能更想要一个具有虚方法Weapon
的抽象基类Fire()
。
然后你可以拥有一个派生类的实例并像这样使用它(例子):
Weapon currentWeapon = new MeeleWeapon();
currentWeapon.Fire();