C#winforms中的静态类变量范围问题 - 为什么这段代码不起作用?

Gre*_*reg 1 c# static static-variables winforms

我在WinForms应用程序中有两种不同的形式(MainForm和Form2说).他们都通过"getInstance"静态方法请求访问MyDataSet.问题是在MainForm有一个实例之后,当Form2需要获取一个实例静态"myDataSet"变量为null时,我希望已经设置了?有任何想法吗?

public class MyDataSet
{
    public static MyDataSet myDataSet;   
       // This was null 2nd call to getInstance

    private DataSet myData = new DataSet();

    public static MyDataSet GetInstance()
    {
        if (myDataSet == null)
        {
            return new MyDataSet();
        }
        else
        {
            return myDataSet;
        }
    }
Run Code Online (Sandbox Code Playgroud)

所以几乎看起来静态的"myDataSet"变量不仅仅有一次实例吗?

pm1*_*100 7

你忘了将新创建的实例分配给myDataset

if(myDataSet == null)
{
    myDataSet = new MyDataSet();
}
return myDataSet
Run Code Online (Sandbox Code Playgroud)