class xxx
{
public myclass q1;
public myclass q2;
public myclass q3; public void something_clicked()
{
q1 = new myclass();
q2 = new myclass();
q3 = new myclass(); linklabel1.Text = q1.ToString();
linklabel2.Text = q1.ToString();
linklabel3.Text = q1.ToString();
}
}在调试的时候q1,q2,q3的ToString不一样
但是已运行程序q1,q2,q3就总是一模一样
请问这是怎么回事,如何解决?
谢谢
{
public myclass q1;
public myclass q2;
public myclass q3; public void something_clicked()
{
q1 = new myclass();
q2 = new myclass();
q3 = new myclass(); linklabel1.Text = q1.ToString();
linklabel2.Text = q1.ToString();
linklabel3.Text = q1.ToString();
}
}在调试的时候q1,q2,q3的ToString不一样
但是已运行程序q1,q2,q3就总是一模一样
请问这是怎么回事,如何解决?
谢谢
解决方案 »
- 求用c#开发的Unity3d简单游戏demo在vs上能跑的就行
- 想要做一个企业内部聊天软件
- C# dataGridView1点列标题报错
- 用C#写一个查看某个进程的程序的一些问题
- 求解~
- C#操作excel某一列求和问题
- 请教webbroswer下拉列表关联的问题
- 请教几个概念:asp.net webservice, asp.net web api, wcf
- 三菱 FX-TRN-BEG-C plc 死机问题
- 关于datagrid的把某一列突出显示,即让某一列的颜色和其他列不同,请问怎么解决!急!
- 一个c# 权限问题
- 怎样改变 datagrid 中符合某种条件的几行的字体的颜色(Winform)
调试的时候是什么信息?
已运行(什么意思)是什么信息?
linklabel2.Text = q1.ToString();
linklabel3.Text = q1.ToString();
.......
表说是这个原因。
public class MyClass
{
public int faciend=0;
public int multiplier=0;
public int answer=0;
public static int max=400; public MyClass(int level)
{
max=80*level;
next(); } override public string ToString()
{
return Convert.ToString(answer)+ " ÷ " + Convert.ToString(faciend)
+ " = ?";
} public bool Equals(IntQuestionGen question)
{
return question.answer==answer&&question.faciend==faciend;
} public void assign(IntQuestionGen q)
{
faciend = q.faciend;
multiplier = q.multiplier;
answer = q.answer;
} public void next()
{
Random rnd = new Random();
int range = Convert.ToInt32(System.Math.Sqrt(max));
RECALC:
faciend = rnd.Next(1,range);
multiplier = rnd.Next(1,range);
if(faciend*multiplier>max)goto RECALC;
answer = faciend*multiplier;
}
}调试的时候3个LinkLabel的Text是不同的
但是在运行的时候(非调试)3个LinkLabel的Text都一样
linklabel1.Text = q1.ToString();
linklabel2.Text = q2.ToString();
linklabel3.Text = q3.ToString();
Random的结果跟时间和Seed有关,所用的三个新的Random在实际运行的时候几乎是在同一时间生成的,所以就产生了相同的结果。
所以建议你把Random rnd也定义成private static,然后需要的时候用rnd.Next来获得随机数,同一个对象多次Next所得的结果就不一样了,因为Next会改变rnd所用的seed
Random的结果跟时间和Seed有关,所用的三个新的Random在实际运行的时候几乎是在同一时间生成的,所以就产生了相同的结果。
所以建议你把Random rnd也定义成private static,然后需要的时候用rnd.Next来获得随机数,同一个对象多次Next所得的结果就不一样了,因为Next会改变rnd所用的seed