如何使switch case语法更小?

时间:2016-03-03 18:49:25

标签: c#

我正在创建简单的名称生成器,它的工作原理如下:我得到一个名称值为4个元素的数组,我使用随机类从数组中选择特定名称,然后我使用switch case验证选择哪一个并将其打印到控制台。

但是,它只有4个元素,但是什么时候我会尝试制作100个元素4个样本?我试图在for循环中使用switch case在一种情况下递增所有内容,但事实证明case索引应该是const。那么,有没有其他可能的方法使开关盒更灵活,更小?

以下是intered http://pastebin.com/bbCxLtRq

的代码

3 个答案:

答案 0 :(得分:4)

不需要switch

if (NameIndex >= 0 && NameIndex <= 3)
{
    return Name[NameIndex];
}
return null;

使用更复杂的示例,您可以使用return删除break

而不是

    switch (NameIndex)
        {
            case 0:
                name = Name[0];
            break;

            case 1:
                name = Name[1];
            break;

            case 2:
                name = Name[2];
            break;

            case 3:
                name = Name[3];
            break;
        }
        return name;

    switch (NameIndex)
        {
            case 0:
                return Name[0];

            case 1:
                return Name[1];

            case 2:
                return Name[2];

            case 3:
                return Name[3];
        }
    return null;

答案 1 :(得分:1)

正如评论中所提到的,不需要Switch语句来实现这一目标 - 请参考以下代码片段作为示例:

public class Generate
{
    static string[] Name = new string[] { "Mariusz", "Janusz", "Bogdan", "Zbigniew" };
    static Random random = new Random();

    public static string NameGen()
    {
      return Name[(int) random.Next(3)];
    }
}

如果您确实需要使用Switch语句(出于某种原因,可能只是出于教学目的),那么有一种方法可以简化它,如下面的代码段所示:

switch (NameIndex)
        {
            case 0:
            case 1:
            case 2:
            case 3:
                return Name[NameIndex];
        }

希望这可能会有所帮助

答案 2 :(得分:0)

使您的方法具有固定长度的独立性:

public static string NameGen()
{
    int index = random.Next(Names.Length);
    return Names[index];
}

public static string SurnameGen()
{
    int index = random.Next(Surnames.Length);
    return Surnames[index];
}