Problem mit Statischer Klasse und scheinbar inexistenten Arrays

Jungbluth

Mitglied
Hallo,
da ich nicht ganz weiß ich das ganze beschreiben soll entschuldige ich mich schon mal falls Unterforum oder Threadname nicht ganz passend sind.

C#:
public static class Sonderfertigkeiten
{
    // beispielhaft für alle string arrays
    public static readonly string[] hexenfluch = new string[]
    {
        "Ängste mehren",
        "Beiß auf Granit!",
        "Beute!",
        "Hagelschlag",
        "Hexenschuss",
        "Juckreiz verursachen",
        "Kornfäule",
        "Krötenkuss",
        "Mit Blindheit schlagen",
        "Pech an den Hals wünschen",
        "Pestilenz",
        "Schlaf rauben",
        "Todesfluch",
        "Unfruchtbarkeit",
        "Viehverstümmelung",
        "Warzen sprießen",
        "Zunge lähmen"
    };

    public static string[] GetByGroup(string sonderfertigkeitengruppe)
    {
        switch (Internals.UCFirst(sonderfertigkeitengruppe))
        {
            case "Allgemein":
                return allgemein;
            case "Gelaendekunde":
                return gelaendekunde;
            case "Fernkampf":
                return fernkampf;
            case "Nahkampf":
                return nahkampf;
            case "Manoever":
                return manoever;
            case "Magisch":
                return Internals.GetList(new string[][]{
                    magisch,
                    objektritual_allgemein,
                    geode_weiteres,
                    kristallomantenritual,
                    Internals.Pre("Hexenfluch:", hexenfluch),
                    Internals.Pre("Druidisches Herrschaftsritual:", herrschaftsritual),
                    Internals.Pre("Zaubertanz:", zaubertanz),
                    Internals.Pre("Zibilja-Ritual:", zibiljaritual),
                    Internals.Pre("Trommelzauber:", trommelzauber),
                    Internals.Pre("Gabe des Odun:", derrodunritual),
                    Internals.Pre("Zauberzeichen:",zauberzeichen),
                    Internals.Pre("Runen:",runen),
                });
            case "Merkmalskenntnis":
                return Aventurien.Zauber.merkmalsliste;
            case "Ritualkenntnis":
                return ritualkenntnis;
            case "Objektritual":
                return Internals.GetList(new string[][] {
                    objektritual_allgemein,
                    Internals.Pre("Stabzauber:", stabzauber),
                    Internals.Pre("Kugelzauber:", kugelzauber),
                    Internals.Pre("Schalenzauber:", schalenzauber),
                    Internals.Pre("Druidisches Dolchritual:", dolchritual),
                    Internals.Pre("Keulenritual:", keulenritual),
                    Internals.Pre("Keulenzauber:", keulenzauber),
                    Internals.Pre("Schlangenring-Zauber:", schlangenringritual)
                });
            case "Schamanenritual":
                return schamanenritual;
            case "Elfenlied":
                return elfenlied;
            case "Repraesentation":
                return Aventurien.Zauber.repraesentationsliste;
            case "Geweiht":
                return Internals.GetList(new string[][] { geweiht, Aventurien.Liturgien.liturgienliste });
            default:
                throw new ArgumentException("Die wählte Sonderfertigkeitengruppe existiert nicht.");
        }
    }
}

internal static class Internals
{
internal static string[] Pre(string prefix, string[] array)
    {
        string[] output = new string[array.Length];
        for(int i = 0; i < array.Length; i++)
        {
            output[i] = prefix + " " + array[i];
        }
        return output;
    }
}

Mein Problem ist nun das ich beim zweiten Argument von Pre eine ArgumentNullException bekomme obwohl es immer ein Array aus der Klasse Sonderfertigkeiten ist welche alle hardcoded sind und deswegen nicht null sein dürften.
 

Spyke

Premium-User
Prüf nochmal deine Arrays, einer muss null sein.

Sind die Arrays auch alle readonly oder könnte es ev. auch sein das ein Array ev. auf null gesetzt wird?

Ansosnten im Debug schauen wenns kracht, welcher Einstiegspunkt (CallStack) es ist und dort den Programmablauf (oder das Array) mal prüfen.
 

Jungbluth

Mitglied
Manchmal sieht man den Wald vor lauter Bäumen nicht, das war ein Initalisierungsfehler und die Variablen waren einfach noch nicht gesetzt.