problème statique portée variable de classe en C # WinForms - pourquoi ne pas peu de travail de code?

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

Question

J'ai deux formes différentes dans mon application WinForms (MainForm et Form2 disent). Ils ont tous deux demandent un accès de MyDataSet, via une méthode statique « getInstance ». La question est après MainForm a obtenu une instance, quand Form2 a besoin d'obtenir une instance de la variable statique « de MyDataSet » est nulle, alors que je pense avoir été déjà mis en? Toutes les idées?

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;
        }
    }

Il semble donc presque la variable statique « MyDataSet » ne fonctionne pas en termes d'avoir seulement une fois par exemple?

Était-ce utile?

La solution

vous avez oublié d'attribuer la nouvelle à créer une instance MyDataSet

if(myDataSet == null)
{
    myDataSet = new MyDataSet();
}
return myDataSet

Autres conseils

Vous n'avez pas défini myDataSet

Ceci est le code correct:

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;
        }
    }
scroll top