实例变量同名但基于切换结果的类型不同的最佳方法是什么

时间:2016-08-02 14:45:50

标签: c#

显然,由于compareItem变量的多个声明,以下代码是错误的。 但是为了理解这是我希望这段代码的工作方式。

{{1}}

根据交换机的结果,实现像Item类或Item类数组实例化compareItem的最佳方法是什么?

2 个答案:

答案 0 :(得分:5)

您可以使用一个变量。由于您使用Item[]Item,因此您可以使用一个Item[]。如果是盔甲,盾牌,手枪和手榴弹,它只包含一个项目:

Item[] compareItems = null;
switch (objectType)
{
    case "Armor":
        compareItems = new Item[]{ player.armor };
        break;
    case "Shield":
        compareItems = new Item[]{ player.shield };
        break;
    case "Medikit":
        compareItems = new Item[]{ player.medikit };
        break;
    case "Grenade":
        compareItems = new Item[]{ player.grenade};
        break;
    case "Weapon":
        compareItems = player.weapons;
        break;
    case "Bullet":
        compareItems = player.bullets;
        break;
    default:
        return;
}

无论如何,你的逻辑必须处理数组。

答案 1 :(得分:-1)

您可以在此处使用dynamic。例如

      dynamic compareItems;
      switch (objectType)
      {
       case "Armor":
          compareItems = new Item[]{ player.armor };
          break;
       case "Shield":
          compareItems = new Item[]{ player.shield };
          break;
       case "Medikit":
          compareItems = new Item[]{ player.medikit };
          break;
       case "Grenade":
          compareItems = new Item[]{ player.grenade};
          break;
       case "Weapon":
          compareItems = player.weapons;
          break;
       case "Bullet":
          compareItem = player.bullets;
          break;
       default:
          return;
      }