cuestión alcance variable de clase estática en C # WinForms - ¿por qué no hace esto poco de trabajo de código?
-
20-09-2019 - |
Pregunta
Tengo dos formas diferentes en mi aplicación WinForms (MainForm y Form2 dicen). Ambos piden un acceso de MyDataSet, a través de un método estático "getInstance". La cuestión es, después de MainForm tiene una instancia, cuando Form2 necesita para obtener una instancia de la estática "myDataSet" variable es nula, mientras que espero haber sido ya establecido? ¿Alguna idea?
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;
}
}
Así que casi parece el "myDataSet" variable estática no está funcionando en términos de tener sólo una vez ejemplo?
Solución
que se olvidó de asignar la instancia recién crear a MyDataSet
if(myDataSet == null)
{
myDataSet = new MyDataSet();
}
return myDataSet
Otros consejos
No se ha configurado myDataSet
Este es el código correcto:
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;
}
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(); // Changed at this point
return myDataSet;
}
else
{
return myDataSet;
}
}
Tome un vistazo a este artículo de Jon Skeet. Como otros han dicho que no está ajustando la variable, pero también puede que quiera poner en práctica un modelo más robusto, o tal vez deshacerse del singleton. Como es que podría terminar varias instancias que se está creando de MyDataSet.
Me gustaría ir con la versión de cuarto o quinto, si necesita un producto único.