C#winforms中的静态类变量范围问题-为什么';这段代码不管用吗?
我的WinForms应用程序中有两种不同的表单(MainForm和Form2)。它们都要求通过“getInstance”静态方法访问MyDataSet。问题是在MainForm获得一个实例之后,当Form2需要获得一个实例时,静态“myDataSet”变量为null,而我希望已经设置了?有什么想法吗C#winforms中的静态类变量范围问题-为什么';这段代码不管用吗?,c#,winforms,static,static-variables,C#,Winforms,Static,Static Variables,我的WinForms应用程序中有两种不同的表单(MainForm和Form2)。它们都要求通过“getInstance”静态方法访问MyDataSet。问题是在MainForm获得一个实例之后,当Form2需要获得一个实例时,静态“myDataSet”变量为null,而我希望已经设置了?有什么想法吗 public class MyDataSet { public static MyDataSet myDataSet; // This was null 2nd call
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;
}
}
因此,静态“myDataSet”变量似乎无法仅使用一个实例?您忘记将新创建的实例分配给myDataSet
if(myDataSet == null)
{
myDataSet = new MyDataSet();
}
return myDataSet
您忘记将新创建的实例分配给myDataset
if(myDataSet == null)
{
myDataSet = new MyDataSet();
}
return myDataSet
您没有设置
myDataSet
这是正确的代码:
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)
{
myDataSet =new MyDataSet();
}
return myDataSet;
}
您没有设置
myDataSet
这是正确的代码:
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)
{
myDataSet =new MyDataSet();
}
return myDataSet;
}
请看Jon Skeet的这篇文章。正如其他人所说的,您没有设置变量,但是您可能还希望实现一个更健壮的模式,或者可能摆脱单例。实际上,您可能会创建MyDataSet的多个实例
如果你需要单身汉,我会选择第四版或第五版。请看Jon Skeet的文章。正如其他人所说的,您没有设置变量,但是您可能还希望实现一个更健壮的模式,或者可能摆脱单例。实际上,您可能会创建MyDataSet的多个实例
如果需要单例,我会选择第四或第五个版本。作为旁白,myDataSet静态成员应该是私有的。作为旁白,myDataSet静态成员应该是私有的。