如何在不在 C# 范围内时创建 goto 语句?
How to make goto statements when not in scope in C#?
我目前正在用 C# 制作的控制台 window 开发一个小型彩票游戏。
我添加了一个功能,让用户随机选择他将在他的票上拥有的 6 个号码,但我注意到我的随机数生成器有时会生成相同的号码,即使理论上你只能有一个号码,所以我构建了这个检查是否有任何数字相同,只是注意到我无法返回随机化新的数字列表,因为 goto
函数无法跳出循环 (CS0159)。还有其他方法吗?
代码:
Console.WriteLine("\nRandomized 6 numbers: ");
// Randomize 6 numbers in for the array randomList
for (int z = 0; z <= 5; z++)
{
SameNum:
int rndNum = rnd.Next(1, 50);
randomList[z] = rndNum;
}
// Once the list is done check if any elements of the array
// are the same and if yes go back to SameNum to generate a new
// List of 6 numbers
for (int a = 0; a <= 5; a++)
{
for (int b = 0; b <= 5; b++)
{
while (randomList[a] == randomList[b])
{
goto SameNum;
}
}
}
// Display the random list if there are no same numbers
for (int c = 0; c <= 5; c++)
{
Console.WriteLine(randomList[c] + " ");
}
可能的解决方案。
List<int> digits = new List<int>();
int z= 0;
while(z <= 5)
{
int rndNum = rnd.Next(1, 50);
if(!digits.Contains(rndNum))
{
digits.Add(rnbNum);
z++;
}
}
int[] randomList = digits.ToArray();
digits.Clear();
我目前正在用 C# 制作的控制台 window 开发一个小型彩票游戏。
我添加了一个功能,让用户随机选择他将在他的票上拥有的 6 个号码,但我注意到我的随机数生成器有时会生成相同的号码,即使理论上你只能有一个号码,所以我构建了这个检查是否有任何数字相同,只是注意到我无法返回随机化新的数字列表,因为 goto
函数无法跳出循环 (CS0159)。还有其他方法吗?
代码:
Console.WriteLine("\nRandomized 6 numbers: ");
// Randomize 6 numbers in for the array randomList
for (int z = 0; z <= 5; z++)
{
SameNum:
int rndNum = rnd.Next(1, 50);
randomList[z] = rndNum;
}
// Once the list is done check if any elements of the array
// are the same and if yes go back to SameNum to generate a new
// List of 6 numbers
for (int a = 0; a <= 5; a++)
{
for (int b = 0; b <= 5; b++)
{
while (randomList[a] == randomList[b])
{
goto SameNum;
}
}
}
// Display the random list if there are no same numbers
for (int c = 0; c <= 5; c++)
{
Console.WriteLine(randomList[c] + " ");
}
可能的解决方案。
List<int> digits = new List<int>();
int z= 0;
while(z <= 5)
{
int rndNum = rnd.Next(1, 50);
if(!digits.Contains(rndNum))
{
digits.Add(rnbNum);
z++;
}
}
int[] randomList = digits.ToArray();
digits.Clear();