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

sma*_*k91 0 c#

显然,由于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;
        }
Run Code Online (Sandbox Code Playgroud)

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

Tim*_*ter 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;
}
Run Code Online (Sandbox Code Playgroud)

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