cuestión alcance variable de clase estática en C # WinForms - ¿por qué no hace esto poco de trabajo de código?

StackOverflow https://stackoverflow.com/questions/2054021

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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top