值不能为空。 C#

时间:2018-07-21 06:31:12

标签: c#

我正在尝试获取int[] array,但返回的错误是值不能为空。我仍然是C#的新手。有人可以帮助或提供解决方法的线索吗?我尝试了许多传递值的技术,但仍然没有运气。

这是数组的来源

    private void btnTag_Click(object sender, EventArgs e)
    {
        List<int> employee_id_list = new List<int>();
        foreach (Control c in panelEmployee.Controls)
        {
            if (c is CheckBox)
            {
                if (((CheckBox)c).Checked)
                {
                    employee_id_list.Add(Convert.ToInt32(c.Tag));
                }
            }
        }

        var type = Type.GetType("Payroll." + dynamic_form);
        dynamic form = Activator.CreateInstance(type) as Form;
        form.GetEmployeeID(employee_id_list.ToArray());
        this.Close();

    }

我在这里显示它的地方

    public int[] emp_id;

    public void GetEmployeeID(int[] employee_id)
    {
        emp_id = employee_id;
        //in this code there are no errors and it is showing the array
        MessageBox.Show(string.Join(Environment.NewLine, emp_id));
    }

    private void btnSave_Click(object sender, EventArgs e)
    {
       // but when i trigger this it returns and error Value cannot be null
        MessageBox.Show(string.Join(Environment.NewLine, emp_id));
    }

1 个答案:

答案 0 :(得分:1)

我认为您的问题是您在fil.png 调用之间丢失了变量emp_id的值(它将参数中的值分配给GetEmployee,因此您始终通过传递一个非null值)和后来对emp_id的调用,该调用试图使用先前(并希望)分配的btnSave_Click

也许您正在使用WebForms,在这种情况下,您应该将emp_id分配为Session状态,否则将不会在下次请求时删除。

emp_id