C# 类变量被赋值为null

C# 类变量被赋值为null,c#,class,variables,methods,C#,Class,Variables,Methods,我有一个主窗体,其中我分配了一些变量并将它们传递给myclass.cs。我需要在myclass.cs中使用类变量,因为我需要在该类的多个位置使用这些变量 我可以在myclass.cs的CustomerParams方法中正确地看到变量,因此我知道它们正在到达那里。但是,如果我在InitializeComponent之后调用它们,它们总是返回null;myclass.cs的。如果我在另一个事件处理程序中调用它们,例如在myclass.cs中单击按钮,那么它们总是返回分配的第一个变量,并且永远不会得到

我有一个主窗体,其中我分配了一些变量并将它们传递给myclass.cs。我需要在myclass.cs中使用类变量,因为我需要在该类的多个位置使用这些变量

我可以在myclass.cs的CustomerParams方法中正确地看到变量,因此我知道它们正在到达那里。但是,如果我在InitializeComponent之后调用它们,它们总是返回null;myclass.cs的。如果我在另一个事件处理程序中调用它们,例如在myclass.cs中单击按钮,那么它们总是返回分配的第一个变量,并且永远不会得到更新,因为我从mainform中的列表框中选择了不同的变量,即使CustomerParams方法继续按预期更新。我做错了什么

mainform.cs

    private void listBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (listBox != null)
        {
            string customerName = (listBox.SelectedItem.ToString());
            MyClass mc = new MyClass();

            contentPanel.Controls.Add(mc);

            mc.CustomerParams(customerName, customerId);
        }
    }
myclass.cs

public partial class MyClass : UserControl
{
    private int _customerId { get; set; }
    private string _customerName {get; set;}
    public MyClass()
    {
        InitializeComponent();

        // Shows null values!
        Console.WriteLine("Values: " + _customerName + "(" + _customerId + ")");
    }

    public void CustomerParams(string customerName, int customerId)
    {
        _customerName = customerName;
        _customerId = customerId;

        // Shows correct values!
        Console.WriteLine("Values-Method: " + _customerName + "(" + _customerId + ")");

    }

    private void testButton_Click(object sender, EventArgs e)
    {
        // Only shows the initial value even when the SelectedIndex in mainform.cs changes
        Console.WriteLine("Values-Button: " + _customerName + "(" + _customerId + ")");
    }
}

InitializeComponent之后将获得null,因为没有为变量分配任何内容。它们在CustomerParams中有一个值,因为您正在将它们设置为通过该方法得到的参数。为这些变量赋值的唯一位置是CustomerParams方法,因此它们不会在该方法之外更改值。

修复了该问题。我最终做的是在我的主窗体中创建了一个静态方法,我在其中分配变量,然后为我的按钮单击调用该静态方法,以及在myclass中分配变量
什么是AffiliateProperty?我已经将方法名称和变量更改为用于在线发布的通用方法,这是一个疏忽,我也忘了更改该引用。我已经相应地更新了代码。这是ASP.NET吗?MVC?WinForms?这是针对WinForms的。这个答案似乎不太完整。如果是这样,我就不会在myclass.cs的所有其他方法中收到初始值。我不明白为什么每次运行CustomerParams方法时,该值都没有得到更新,或者为什么在InitializeComponent之后引用变量时只得到null?由于我是在类级别创建变量,所以我认为每次调用CustomerParams时都应该更新变量,但事实并非如此。我是否遗漏了什么,BradleyDotNET?对我来说似乎很简单。@doby48:那么你是说你调用CustomerParams并传递新值,然后属性\u customerId和\u customerName仍然有它们的旧值?我的应用程序就是这样工作的。mainform.cs打开,用户必须单击列表框项,该项反过来调用CustomerParams。此时,CustomerParams方法以及myclass.cs中的所有其他方法中的变量都已更新,尽管初始化Component后仍然为null。然后,用户从列表框中选择另一项,该项又会调用CustomerParams。变量在该方法中再次正确更新,但这次使用myclass.css的其余方法不会再次更新。遗憾的是,您不得不使用静态变量。我从静态变量开始,但不得不删除它们,现在遇到了您描述的问题。静态变量的问题是,它是为整个应用程序容器设置的,在这种情况下似乎不合适。