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

时间:2014-04-04 12:30:10

标签: c# arrays global

我按下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();
            }
        }
    }
}

这是我上课的时间:

类ozv     {         公共字符串名称;         public int id;     }

1 个答案:

答案 0 :(得分:2)

删除此行:

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<ozv>,这样你就可以迭代它而不必处理空值。