winforms 将对象转换为字符串时解决逻辑错误

lmvvr0a8  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(77)

对不起,如果这已经回答过,但我还没有得到任何相关的结果,通过查找标题,我不知道如何措辞。
我最近一直在学习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);
            }

我现在不能写另外两个,但我会尽快。

lnlaulya

lnlaulya1#

不要在方法中创建Random对象。更改:

private int GenerateNumber()
    {
        Random random = new Random();
        int returnInt = random.Next(1, 6);
        return returnInt;
    }

至:

Random random = new Random();
   private int GenerateNumber()
    {
        int returnInt = random.Next(1, 6);
        return returnInt;
    }

相关问题