Die übergabe einer Enum als argument

Ich bin Herumspielen mit dem Versuch, um ein einfaches Lustiges Spiel zum lernen von C# ein bisschen besser. Ich versuche, eine Allgemeine Methode, die ich Ihnen geben kann, ist es ein Enum als argument, und es zurück, wie viele Elemente in das Enum als int. Ich brauche, um es so allgemein wie möglich, denn ich habe mehrere verschiedene Klassen Aufruf der Methode.

Habe ich gesucht, um für die Letzte Stunde oder so, aber ich konnte nicht finden, dass alle Ressourcen, die hier oder sonst ganz meine Frage beantwortet... ich bin immer noch ein Anfänger-intermediate-Stufe für C#, so dass ich bin immer noch lernen, all die syntax für die Dinge, aber hier ist was ich habe, so weit:

//Type of element
public enum ELEMENT
{
    FIRE, WATER, AIR, EARTH
}


//Counts how many different members exist in the enum type
public int countElements(Enum e)
{
    return Enum.GetNames(e.GetType()).Length;
}


//Call above function
public void foo()
{
    int num = countElements(ELEMENT);
}

Kompilierung mit der Fehlermeldung "Argument 1: Cannot convert from 'System.Geben Sie' zu 'System.Enum'". Ich sehen, warum es nicht funktionieren wird aber ich brauche gerade etwas Richtung festlegen, alles korrekt.

Dank!

PS: Ist es möglich, ändern Sie den Inhalt einer enum zur Laufzeit? Während das Programm ausgeführt wird?

  • Was wäre der Zweck der änderung einer enum zur Laufzeit? Kein code, wäre mit zusätzlichen Werten und Codes mit geändert/entfernt-Werte brechen würde. Wenn Sie wollen, um Listen von Daten-Elemente, die dynamisch zur Laufzeit geändert, die eine Datenbank verwenden.
  • Ich bin versucht zu emulieren Zwerg-Festung, die auf einem kleineren Maßstab. Sie können alle möglichen Sachen über eine Art von flat-text-Dateien, die das Spiel analysiert, die durch auf Start. Nicht sicher, wie genau Sie es eingerichtet haben, obwohl meine Vermutung ist, dass wenn man zu fest Enumerationen, mit Ihnen zu arbeiten, dann würde es nicht mit Ihnen sein,... ein Wörterbuch vielleicht?
InformationsquelleAutor Kyle Baran | 2012-04-05
Schreibe einen Kommentar