【发布时间】:2014-05-21 05:17:58
【问题描述】:
所以我正在尝试学习一些 C#,目前正在学习编程入门的短期课程。我的教科书中有一个问题,这给了我对这篇文章的几乎类似的结果Same random numbers from instantiated class
我尝试遵循解决方案,但每次都得到相同的结果,任务是掷两个骰子并使用类的 2 个实例显示它们的数字。但就像帖子上面的“骰子”角色一样编号。如果我两次调用类的同一个实例并将值放到单独的标签中,我会得到完全不同的值,就像我想要的那样。这是课程:
namespace CH10_Ex10._5
{
public class ThrowDice
{
public ThrowDice()
{
}
private Random newRandom = new Random();
private int x;
public void Throw()
{
x = newRandom.Next(1, 7);
}
public int value
{
get
{
return x;
}
}
}
}
这是我的主要形式:
namespace CH10_Ex10._5
{
public partial class Form1 : Form
{
ThrowDice Die1;
ThrowDice Die2;
public Form1()
{
InitializeComponent();
Die1 = new ThrowDice();
Die2 = new ThrowDice();
}
private void button1_Click(object sender, EventArgs e)
{
Die1.Throw();
dieOneLabel.Text = Convert.ToString(Die1.value);
Die2.Throw();
dieTwoLabel.Text = Convert.ToString(Die2.value);
}
}
}
我试图在不打开新帖子的情况下找到答案,所以如果之前已经回答过,我很抱歉。我对此很绿色。
我的理解是,如果我用 new 声明对象,那么我将创建类的单独实例,因此当我调用这些对象时,它们应该独立/单独运行,但使用我的类中指定的相同规则。我尝试调试,当我单步执行代码时,我看到了对类的 2 个单独调用,看起来调用 1 生成了一个随机数,例如 6,调用 2 似乎也生成了 6。
提前致谢
【问题讨论】: