2016-04-20 18 views
-1

Ich schaute auf eine andere Frage ähnlich, konnte aber nicht ganz verstehen, was sie getan haben, um das Problem zu lösen.Typ Initialisierung Ausnahme C#

Ich bin vorbei einfach einen Wert in ein public static int:

namespace ModNote 
{ 

public partial class homeScreen : Form 
{ 

    public homeScreen() 
    { 
     InitializeComponent(); 
    } 

    private void gamemodButton_Click(object sender, EventArgs e) 
    { 
     backgroundProgram.moduleNumber = 1; 
     this.Hide(); 
     moduleScreen showForm = new moduleScreen(); 
     showForm.Show();   
    } 

und das ist, wo diese Variable

initialisiert
namespace ModNote 
{ 
#region // Setting up Variables 
public class backgroundProgram 
{ 
    public static int moduleNumber;  
} 
#endregion 

}

und hier ein Bild des Fehlers : http://puu.sh/opETJ/fb8152d164.png

Danke.

edit: Initialisierung der String-Array verursacht diesen Fehler, irgendwelche Probleme mit diesem Array initialisiert werden? (ModuleArray)

namespace ModNote 
{ 
#region // Setting up Variables 
public class backgroundProgram 
{ 
    public static int moduleNumber; 
    public static string[] noteArray; 
    public static string[] moduleArray = new string[7] 
    { File.ReadAllText(@"ModulesFile\CGP1005M.txt"), 
     File.ReadAllText(@"ModulesFile\CMP1005M.txt"), 
     File.ReadAllText(@"ModulesFile\CMP1123M.txt"), 
     File.ReadAllText(@"ModulesFile\CMP1124M.txt"), 
     File.ReadAllText(@"ModulesFile\CMP1125M.txt"), 
     File.ReadAllText(@"ModulesFile\CMP1127M.txt"), 
     File.ReadAllText(@"ModulesFile\CMP1129M.txt") 
    }; 

} 
#endregion 

}

+0

Diese Ausnahme weist normalerweise auf eine Ausnahme in einem statischen Initialisierer oder Konstruktor hin. Da du weder zeigst noch nehme ich an, das eigentliche Problem liegt woanders. –

+0

Ich habe gerade festgestellt, dass es nicht funktioniert, wenn ich mein Array initialisieren – Durell

+0

Wenn Sie es nicht herausfinden können Sie diese Frage bearbeiten und wählen, um es wieder zu öffnen) oder erstellen Sie eine neue. –

Antwort

0

Wenn die Ausnahme ist hier werfen:

public static string[] moduleArray = new string[7] 
{ File.ReadAllText(@"ModulesFile\CGP1005M.txt"), 
    File.ReadAllText(@"ModulesFile\CMP1005M.txt"), 
    File.ReadAllText(@"ModulesFile\CMP1123M.txt"), 
    File.ReadAllText(@"ModulesFile\CMP1124M.txt"), 
    File.ReadAllText(@"ModulesFile\CMP1125M.txt"), 
    File.ReadAllText(@"ModulesFile\CMP1127M.txt"), 
    File.ReadAllText(@"ModulesFile\CMP1129M.txt") 
}; 

Dann eine dieser Linien ist eine Ausnahme zu werfen. Es gibt alle möglichen Gründe für eine Ausnahme beim Lesen aus einer Datei - Sicherheit, nicht gefunden, in Verwendung usw.

Ich würde vorschlagen, diese Logik auf den statischen Konstruktor zu verschieben, so dass Sie es debuggen können, um das zu finden sofortiges Problem, dann fügen Sie eine bessere Fehlerbehandlung hinzu.

Eine weitere Möglichkeit ist nicht all diese Daten im statischen Konstruktor lesen und stattdessen eine Initialize Methode oder etwas erstellen. Ausnahmen in statischen Konstruktoren sind im Allgemeinen schwierig zu handhaben.

+0

Ich habe mich bei Initialize umgesehen und verstehe es nicht ganz. Wie würde ich ein String-Array erstellen, das 7 Textdateien an jeden Ort im Array einliest? Ich habe mich eine Stunde lang daran gehalten und versucht es herauszufinden. – Durell

+0

Es gibt keine magische 'Initialize'-Methode; Ich sage nur, erstellen Sie eine statische Methode, die die Daten initialisiert, anstatt es im Konstruktor zu tun. Sie würden diese Methode beim Start von Ihrem Hauptprogramm aus aufrufen. _Syntaktisch_ ist nichts falsch mit dem, was Sie haben, aber _etwas_ verursacht eine Laufzeitausnahme. Sie müssten Fehlerbehandlung oder Fehlerbehandlung hinzufügen, um genau zu wissen, was das Problem ist. –