全局变量在一个函数中搜索不起作用

我按下button1后创建了一个在textbox1和textbox2中获取信息的程序。 如果你输入textbox3,如果你在那里写的与textbox1相同,按下button2后,它会将textbox2的文本放在label2.text中。

但问题是它不会将textbox2.text放入label2.text。 为什么?

这是代码:

public partial class Form1 : Form { public Form1() { InitializeComponent(); } ozv[] a = new ozv[5]; int i = 0; private void button1_Click(object sender, EventArgs e) { a[i] = new ozv(); a[i].name = textBox1.Text; a[i].id = int.Parse(textBox2.Text); i++; } private void button2_Click(object sender, EventArgs e) { for (int j = 0; j < 5; j++) { a[j] = new ozv(); if (a[j].name == textBox3.Text) { label2.Text = a[j].id.ToString(); } } } } 

这是我上课的:

class ozv {public string name; public int id; }

删除此行:

 for (int j = 0; j < 5; j++) { ---> a[j] = new ozv(); if (a[j].name == textBox3.Text) 

你正在删除刚刚保存的内容,这就是为什么你没有得到任何结果。

另外,检查是否定义了[j]实例:

 if (a[j] != null) && a[j].name == textBox3.Text) 

你也可以break; 找到第一个匹配的出现后,先退出循环。

注1:您应该尝试逐步进入代码,并查看变量状态。 这真的可以帮助你调试这样的东西。

注意2:您应该考虑使用List这样您就可以迭代它而不必处理空值。