2009-08-05 7 views
2

Je suis nouveau à C#. J'essaie de complimenter le programme suivant mais il me renvoie une erreur à la fin: je sais que je fais une bêtise. Toute aide serait appréciée:Erreur de variable locale non affectée C#

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, monobjarray [0] .m_classID, monobjarray [0] .m_categoryID); }

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

    } 
} 

}

Et la classe est dans le fichier Class1.cs dans le même projet et est la suivante:

all_integer_IDs public class {

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; 

} 

L'erreur est la suivante: Utilisation de la variable locale non affectée 'myobjarray' à la ligne 55 qui est copiée et collée bel ow: myobjarray [c] = new all_integer_IDs();

Merci, Viren

+0

J'ai changé ma réponse. J'espère que ça aide –

Répondre

2

Vous avez pas l'espace alloué pour myObjarray. Vous devez allouer

Utilisation:

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

à la ligne 55.

Et s'il vous plaît utiliser PascalCase pour les noms de classe (dans votre cas, AllIntegerIDs). D'autres développeurs vont vous remercier pour cela

- EDIT, mon mauvais. Corrigé la façon de l'appeler. S'il vous plaît essayez ce qui suit

+0

merci samuel..it fonctionne parfaitement maintenant..posséder quelques autres questions dès que je travaille sur cette interface graphique C# actuellement..espérez avoir le temps d'y répondre .. – zack

+0

Je vais essayer de vous aider dans tout ce que je peux . Bonne chance! –

1

Il semble que vous devez déclarer la taille et le type du tableau myobjarray lorsque vous instanciation. En fait, il semble que vous ayez déjà ce code, il vous suffit de supprimer le symbole de commentaire.

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

Merci, Eh bien j'ai enlevé le commentaire.Maintenant, il me donne l'erreur «Nom de la méthode attendue» à la ligne all_integer_IDs [] myobjarray = new all_integer_IDs [10](); J'ai également essayé le suivant avec le constructeur mais cela n'a pas fonctionné non plus: public all_integer_IDs() {m_messageID = 0; m_messagetype = 0; m_classID = 0; m_categoryID = 0; } – zack

+0

Etes-vous sûr que les espaces de noms dans les deux classes sont les mêmes? – sgmoore

+0

En fait, il devrait être all_integer_IDs [] myobjarray = new all_integer_IDs [10]; – sgmoore

0

Vous n'avez jamais instancié votre tableau, il semble que vous avez commenté cette partie.

Si vous voulez un tableau de longueur variable, essayez plutôt une liste <>.

+0

Merci, Eh bien j'ai enlevé le commentaire. Maintenant, il me donne l'erreur «Nom de la méthode attendue» à la ligne all_integer_IDs [] myobjarray = new all_integer_IDs [10](); J'ai aussi essayé le suivant avec le constructeur mais ça ne fonctionnait pas non plus: public all_integer_IDs() {m_messageID = 0; m_messagetype = 0; m_classID = 0; m_categoryID = 0; } – zack

0

Vous n'initialisez jamais myobjarray. Vous déclarez myobjarray, mais vous ne lui attribuez aucune mémoire; comme dans: vous n'initialisez pas la variable. Vous initialisez cependant les éléments du tableau (avec un autre tableau), mais vous n'avez pas réservé de mémoire pour le myobjarray lui-même.
(L'initialisation est commentée)

+0

Merci, Eh bien j'ai enlevé le commentaire. Maintenant, il me donne l'erreur «Nom de la méthode attendue» à la ligne all_integer_IDs [] myobjarray = new all_integer_IDs [10](); J'ai aussi essayé le suivant avec le constructeur mais ça ne fonctionnait pas non plus: public all_integer_IDs() {m_messageID = 0; m_messagetype = 0; m_classID = 0; m_categoryID = 0; } – zack

Questions connexes