我正在创建简单的名称生成器,它的工作原理如下:我得到一个名称值为4个元素的数组,我使用随机类从数组中选择特定名称,然后我使用switch case验证选择哪一个并将其打印到控制台。
但是,它只有4个元素,但是什么时候我会尝试制作100个元素4个样本?我试图在for循环中使用switch case在一种情况下递增所有内容,但事实证明case索引应该是const。那么,有没有其他可能的方法使开关盒更灵活,更小?
以下是intered http://pastebin.com/bbCxLtRq
的代码答案 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];
}