重载方法自动播放

时间:2018-04-29 18:31:53

标签: c# unity3d casting

您好,我想知道是否有其他方法可以自动执行此操作

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)

2 个答案:

答案 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();