asp.net中,不设断点程序结果不正常
asp.net中,不设断点程序结果不正常,我做了个简单的图片验证码...
不设断点.所有都一样.
在循环那设个断点. 把循环走完就正常
并且, 我发现, 我总共循环5次. 在循环内,走1次循环,再直接运行,就第一个不一样,后面的都一样,走两次循环就前两个不一样,后面都一样
具体症状.就是这样的.
高手帮帮忙..
追问:试过. 清理解决方案 再生成 也还是那样,
我做了个简单的图片验证码...
不设断点.所有都一样.
在循环那设个断点. 把循环走完就正常
并且, 我发现, 我总共循环5次. 在循环内,走1次循环,再直接运行,就第一个不一样,后面的都一样,走两次循环就前两个不一样,后面都一样
具体症状.就是这样的.
高手帮帮忙..
追问:试过. 清理解决方案 再生成 也还是那样,
答案:你用的是Random吧,你生成图片的代码用了一个循环来产生验证码,Random的运行原理是通过一个种子数产生一个伪随机数序列,用.Next方法获取这个序列索引从0开始的下一个数。由于你吧Random初始化的代码放在了循环体中,电脑运行的速度非常快,你的循环在很短的时间内完成,每次生成的伪随机数序列都一样,每次用.Next方法取的都是新生成的序列中的第一个,所以每次生成的随机数都一样了。
例如,每次都生成同样的伪随机数序列 {1,4,7,2,8,5},每次循环都取得这个序列的第一个数,那么都会取得1
如果只生成一个随机数序列 {1,4,7,2,8,5},每次循环都取下一个,第一次取1,第二次去4,第三次取7,就不会有相同的出现
你把Random的初始化放在循环体外面那么就只会产生一个随机数序列,在循环里面用.Next方法获取这个序列的下一个数那么每次取下一个数你获得的随机数就不同了。
for(int i =0;i<10;i++)
{
Random r = new Random();
int t = r.Next(); //由于速度太快,随机数种子没有发生变化,产生的伪随机数序列都一样,所以每次取到伪随机数序列的第一个都是一样的
}
Random r = new Random();
for(int i =0;i<10;i++)
{
int t = r.Next();//只产生了一个伪随机数序列,所以每次取的数都不一样
}
如果没看懂我会进一步向你解释
重新生产编译解决方案试试!问题很简单 你是设定随机数吧? 现在CPU 运行速度很快 你是第随机种子太小 修改随机种子就能解决问题重新生成一次
上一个:[求助]ASP,NET 和ASP的区别 - ASP.NET -
下一个:asp.net中自动编号问题+数据库查询问题