我想制作一个简单的程序(抽奖号码生成器),该程序在特定范围内接受数字并将其洗牌“n”次,在每次洗牌后它会选择一个随机数并将其从给定范围的列表移动到新列表中,并且将其执行“n”次(直到它选择特定数量的数字,准确地说是7)。我找到了一个完全符合该算法的算法(扩展方法或混排通用列表)。但是我并不是那么喜欢编程,而且我在将结果(带有绘制数字的列表)显示给TextBox或Label时遇到了问题,但是我已经将它与MessageBox配合使用。但有了TextBox/Label,我得到错误“名称*在当前上下文中不存在”。我已经搜索了一个解决方案,但没有任何帮助。C#在当前上下文中不存在名称brojevi
下面的代码:
private void button1_Click(object sender, EventArgs e)
{
List<int> numbers;
numbers = Enumerable.Range(1, 39).ToList();
numbers.Shuffle();
}
private void brojevi_TextChanged(object sender, EventArgs e)
{
}
}
}
/// <summary>
/// Class for shuffling lists
/// </summary>
/// <typeparam name="T">The type of list to shuffle</typeparam>
public static class ListShufflerExtensionMethods
{
//for getting random values
private static Random _rnd = new Random();
/// <summary>
/// Shuffles the contents of a list
/// </summary>
/// <typeparam name="T">The type of the list to sort</typeparam>
/// <param name="listToShuffle">The list to shuffle</param>
/// <param name="numberOfTimesToShuffle">How many times to shuffle the list, by default this is 5 times</param>
public static void Shuffle<T>(this List<T> listToShuffle, int numberOfTimesToShuffle = 7)
{
//make a new list of the wanted type
List<T> newList = new List<T>();
//for each time we want to shuffle
for (int i = 0; i < numberOfTimesToShuffle; i++)
{
//while there are still items in our list
while (listToShuffle.Count >= 33)
{
//get a random number within the list
int index = _rnd.Next(listToShuffle.Count);
//add the item at that position to the new list
newList.Add(listToShuffle[index]);
//and remove it from the old list
listToShuffle.RemoveAt(index);
}
//then copy all the items back in the old list again
listToShuffle.AddRange(newList);
//display contents of a list
string line = string.Join(",", newList.ToArray());
brojevi.Text = line;
//and clear the new list
//to make ready for next shuffling
newList.Clear();
break;
}
}
}
}
这可能是一个作用域的问题:http://msdn.microsoft.com/en-us/library/aa691132 %28VS.71%29.aspx。然而,很难说,因为你没有说错误在哪里。 – Bobson 2013-02-27 20:47:14
显示MessageBox的代码在哪里? – XORcist 2013-02-27 20:47:27
从字面上看,“名称*不存在”还是“*”表示特定的符号? – 2013-02-27 20:48:21