2 Stimmen

C# nicht zugewiesene lokale Variable Fehler

Ich bin neu in C#. Ich versuche, das folgende Programm zu kompilieren, aber es wirft einen Fehler am Ende gegeben: Ich weiß, ich mache einen dummen Fehler. Jede Hilfe würde sehr geschätzt werden:

static void Main(string[] args) {

        IntPtr hCannedMessages = CannedMessagesInit();

        using (StreamReader sr = new StreamReader(CANNED_MESSAGE_FILE))
        {
            String line, sub;
            all_integer_IDs[] myobjarray;// = new all_integer_IDs[10];
            for (int c = 0; c < 10; c++)
            {
                myobjarray[c] = new all_integer_IDs();

            }
                line = sr.ReadLine();
                Console.WriteLine(line);

                if (line.Length > 15)
                {
                     sub = line.Remove(line.IndexOf(' ', 2));
                     Console.WriteLine("{0} \n",sub);

    myobjarray[0].setvalues((int)sub[2], (int)sub[3], (int)sub[4], (int)sub[5]);

Console.WriteLine("{0}, {1}, {2}, {3}", myobjarray[0].m_messageID, myobjarray[0].m_messagetype, myobjarray[0].m_classID, myobjarray[0].m_categoryID); }

               Console.Read();
            sr.Close();
        }

    }
}

}

Die Klasse befindet sich in der Datei Class1.cs im selben Projekt und lautet wie folgt:

public class all_integer_IDs {

    public all_integer_IDs() 
    {

        setvalues(0, 0, 0, 0);

    }

    ~all_integer_IDs()
    {
    }

    public void setvalues (int messageID, int messagetype, int classID, int categoryID)
    {
        this.m_messageID = messageID;
        this.m_messagetype = messagetype;
        this.m_classID = classID;
        this.m_categoryID = categoryID;
    }

     public int m_messageID;
     public int m_messagetype;
     public int m_classID;
     public int m_categoryID;

}

Der Fehler ist folgendermaßen: Verwendung einer nicht zugewiesenen lokalen Variablen 'myobjarray' in Zeile 55, die im Folgenden kopiert und eingefügt wird: myobjarray[c] = new all_integer_IDs();

Danke, Viren

2voto

Samuel Carrijo Punkte 16743

Sie haben keinen Platz zugewiesen für myObjarray . Sie müssen es zuweisen

Verwendung:

all_integer_IDs[] myobjarray = new all_integer_IDs[10];
for (int c = 0; c < 10; c++)
{
    myobjarray[c] = new all_integer_IDs();
}

in Zeile 55.

Und bitte benutzen Sie PascalCase für Klassennamen (in Ihrem Fall, AllIntegerIDs). Andere Entwickler werden Ihnen dafür danken

--EDIT, mein Fehler. Ich habe die Bezeichnung korrigiert. Bitte versuchen Sie folgendes

1voto

Matthew Jones Punkte 24876

Es sieht so aus, als ob Sie die Größe und den Typ des Arrays myobjarray deklarieren müssen, wenn Sie es instanziieren. Tatsächlich sieht es so aus, als hätten Sie diesen Code bereits, Sie müssen nur das Kommentar-Symbol entfernen.

all_integer_IDs[] myobjarray = new all_integer_IDs[10]();

0voto

Neil N Punkte 24394

Sie haben Ihr Array nie instanziiert, es scheint, als hätten Sie diesen Teil auskommentiert.

Wenn Sie ein Array mit variabler Länge wünschen, versuchen Sie es stattdessen mit einer Liste<>.

0voto

Frederik Gheysels Punkte 54908

Sie initialisieren myobjarray nie. Sie deklarieren myobjarray, weisen ihm aber keinen Speicherplatz zu, d. h., Sie initialisieren die Variable nicht. Sie initialisieren jedoch die Elemente des Arrays (mit einem weiteren Array), aber Sie haben keinen Speicher für das myobjarray selbst reserviert.
(Die Initialisierung ist auskommentiert)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X