ich über Aufzählungen in einem Buch lese, und das folgende Codebeispiel gegeben wurde:Verwirrung über Rückgabewert von Enum.GetValues ()
namespace FunWithEnums
{
enum EmpType : byte
{
Manager = 10,
Grunt = 1,
Contractor = 100,
VicePresident = 9
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("**** Fun with Enums *****");
EmpType emp = EmpType.Contractor;
EvaluateEnum(emp);
Console.ReadLine();
}
static void EvaluateEnum(System.Enum e)
{
Array enumData = Enum.GetValues(e.GetType());
for (int i =0; i < enumData.Length; i++)
{
Console.WriteLine("Name: {0}, Value: {0:D}", enumData.GetValue(i));
}
Console.WriteLine();
}
}
Ich bin sehr verwirrt, was in ausgedruckt wird der Forloop. Der Ausgang ist
Name: Grunt, Wert: 1
Name: Vizepräsident, Wert: 9
Name: Manager Wert: 10
Name: Auftragnehmer, Wert: 100
Aber wie erhält es sowohl den Namen UND den Wert jedes aufgezählten Elements? Laut der Microsoft-Dokumentation sollte Array enumData = Enum.GetValues(e.GetType());
nur "ein Array der Werte der Konstanten in einer angegebenen Enumeration" zurückgeben. Ich nehme an, dass es sich bei Konstanten auf "Manager", "Grunt", "Contractor", "VicePresident" bezieht, im Gegensatz zu 10, 1, 100 und 9. Also warum gibt es jedes Paar statt nur den Namen von der Angestelltyp? Außerdem gibt die Ausgabe des folgenden Codes Console.WriteLine(enumData.GetValue(1));
nur einen Wert zurück, der "VicePresident" lautet und die Zahl 9 nicht wie im Forloop zurückgibt. Warum ist das?
„Ich gehe davon aus“: Das ist dein Problem recht. Sie haben eine Geschichte darüber gemacht, was "Werte der Konstanten" bedeuten. Die Ausgabe Ihres Programms zeigt, dass die Geschichte eindeutig falsch war. Nimm also das, was du aus der Ausgabe gelernt hast, und versuche eine neue Geschichte zu konstruieren, die mit den Fakten vor dir konsistent ist. –
Also, wenn es sich auf die "Konstante" bezieht, bezieht es sich auf den Name-Wert PAIR, nicht nur den Namen? – FrostyStraw
Kein Wertpaar, ein Objekt mit Methoden und Membervariablen und übergeordneten Klassen, und das von Console.WriteLine nach seiner Zeichenfolgendarstellung abgefragt wird, wenn eine Zeichenfolge gewünscht wird, und seiner numerischen Darstellung, wenn dies gewünscht wird. – AgapwIesu