2016-08-02 6 views
0

compareItem変数が複数宣言されているため、次のコードは間違っています。 しかし、これを理解するために、私はこのコードをどのようにしたいのですか?インスタンスの最も良い方法は、同じ名前であるがスイッチの結果に基づいて異なるタイプのものです

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

Itemクラスまたはスイッチの結果に基づいて、Itemクラスの配列のように可能なインスタンス化COMPAREITEMを作るための最善の方法は何ですか?

+0

なぜ「Item」と「Item []」を使用しますか?あなたは配列が必要ないと思われます。 –

+0

@TimSchmelter私は複数の武器と複数の弾丸があるので推測しています。 – itsme86

+0

yep player.weaponsとplayer.bulletsは両方ともアイテム配列 – smark91

答えて

-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; 
     }  
+0

これは私が探している答えです。 – smark91

+0

このソリューションは単純に恐ろしいです...そして、最初はシナリオです。 – InBetween

+0

私はあなたのようなコードの美化を知らないのなぜstackoverflowの初心者です@InBetween –

5

1つの変数を使用できます。 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つだけ含まれています。

関連する問題