全局变量不适用于在一个函数中进行搜索

本文关键字:函数 一个 搜索 适用于 不适用 全局变量 | 更新日期: 2023-09-27 17:56:42

我做了一个程序,在按下按钮1后获取文本框1和文本框2中的信息。如果您输入文本框 3 并且您在那里写的内容与文本框 1 相同,则按下按钮 2 后,它将文本框 2 的文本放入标签 2.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 { 公共字符串名称; 公共 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<ozv>,以便您可以迭代它而不必处理 null。