对不起,如果这已经回答过,但我还没有得到任何相关的结果,通过查找标题,我不知道如何措辞。
我最近一直在学习C#。到现在为止,我已经三次遇到逻辑错误,通过将对象转换为字符串来修复。
第一次,我生成了一个随机数。当我没有转换它时,我重复地生成了同一个数字。当我转换它时,RNG按预期工作。问题是在循环内部初始化随机变量,而不是在循环外部。
第二次和第三次都是尝试通过索引获取列表中的第一项。(),对象返回null。当我转换该项时,我得到了正确的值。特别奇怪的是在使用调试器时发生的情况。当我将断点放在.ToString之前时(),该值返回null,即使我运行了.toString()行之后。当我将断点放在.ToString处或之后时(),值显示得很好.另外,我一直在使用绑定列表框来帮助我进行调试,并且绑定的列表框完美地显示了列表中的项目。我仍然不知道是什么导致了这些问题。
我想知道为什么会发生这种情况。这些问题真的很烦人,我想在将来避免它们。如果.ToString()正在修复它们,那么这意味着.ToString()做了一些事情来修复它,我想知道是如何和为什么。
如果我的措辞不准确,请道歉--我从来都不是一个好作家。
更新:对不起,我没有添加代码,因为我不确定它是否相关。
对于RNG错误:
private int GenerateNumber()
{
Random random = new Random();
int returnInt = random.Next(1, 6);
return returnInt;
}
private void DisplayResult()
{
listBox1.BeginUpdate();
int[] displayArray = new int[5];
foreach (int i in displayArray)
{
int temp = GenerateNumber();
listBox1.Items.Add(temp);
}
listBox1.EndUpdate();
}
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
DisplayResult();
// displays the same number
}
.ToString()“修复”是相同的代码,除了DisplayResult()
中的foreach
循环,它被更改为:
foreach (int i in displayArray)
{
int temp = GenerateNumber();
MessageBox.Show(temp.ToString());
listBox1.Items.Add(temp);
}
我现在不能写另外两个,但我会尽快。
1条答案
按热度按时间lnlaulya1#
不要在方法中创建
Random
对象。更改:至: