我想点击按钮并选择1到20之间的数字,然后在lblPickFive_1.Text中显示结果 当我尝试运行它时,我在整个地方都会遇到错误。 错误1字段初始值设定项无法引用非静态字段,方法或属性'LotteryTickets.Form1.random'
警告4检测到无法访问的代码
string random;
string num = random.Next();
string num = random.Next(20);
private int RandomNumber(int min, int max)
{
Random random = new Random();
return random.Next(min, max);
lblPickFive_1.Text=num;
}
}
答案 0 :(得分:1)
请改为尝试:
private void SetRandomNumber(int min, int max)
{
int num = new Random().Next(min, max);
lblPickFive_1.Text=num;
}
答案 1 :(得分:0)
从它的外观来看,这些是原因:
错误1字段初始值设定项不能 引用非静态字段, 方法或财产 'LotteryTickets.Form1.random'
是因为您的方法是私有的,而您正试图从外部调用它
private int RandomNumber(int min, int max)
改为internal
或public
警告4检测到无法访问的代码
是因为您在设置文本框之前返回;
return random.Next(min, max);
lblPickFive_1.Text=num; // This will never get reached
如果是我,我会像这样编写Random方法:
internal static int RandomNumber(int min, int max)
{
Random random = new Random(DateTime.Now.Millisecond); // Use a seed to reduce the chance of re-ocurring numbers
return random.Next(min, max);
}
并且可能会在RandomHelper
类中而不是在表单本身上。
答案 2 :(得分:0)
您对random.Next()的调用超出了声明随机对象的范围。然后,您将获得无法访问的代码,因为在将标签文本设置为num之前返回。
试试这个:
class MyClass
{
Random random;
public MyClass()
{
random = new Random(Guid.NewGuid().GetHashCode());
}
public void RandomNumber(int min, int max)
{
lblPickFive_1.Text = random.Next(min, max).ToString();
}
}
答案 3 :(得分:-1)
你们大多数人都错了......
首先,您需要只有一个Random
个实例,因为它们都会以相同的数字播种...
其次,正如其中一些人所说,代码lblPickFive_1.Text=num;
永远不会被调用。将方法改为:
Random rand = new Random();
private int RandomNumber(int min, int max)
{
int i = rand.Next(min, max);
lblPickFive_1.Text=i;
return i;
}