Entwickler-Ecke
Basistechnologien - Variable vom Typ enum ein Element weiterschalten
Scofield2011 - So 13.11.11 21:15
Titel: Variable vom Typ enum ein Element weiterschalten
Hallo,
ich habe eine Frage zu Enumerationen.
Ich habe eine Enumeration und eine Variable, die vom Typ dieser Enumeration ist.
Zur Initialisierung habe ich der Variablen sozusagen das erste Element der enum zugewiesen.
Im Übrigen wird der Wert dieser Variablen in einem Textfeld angezeigt.
Die Frage bezieht sich auf folgendes:
Ich hätte gerne eine Methode, die das jeweils nächste beziehungsweise vorherige Element der Enumeation der Variablen zuweist.
Es wäre nett wenn mir jemand einen Tipp geben könnte, wie man das "Weiterschalten" umsetzen könnte. Leider geht es nicht mit dem ++ Operator.
Danke schon einmal im Voraus
Scofield2011
Yogu - So 13.11.11 21:22
Hallo,
die Idee der Enumerations ist es, mehrere voneinander unabhängige Werte anzubieten. Diese stehen in keinerlei Beziehungen und die Reihenfolge, wie sie in der Enum-Definition auftritt, ist im Grunde nicht von Bedeutung. Es ist möglich, sie im Programmcode herauszufinden und zu verwenden, aber sieht stark nach schlechtem Stil aus. Wozu willst du es denn machen?
So wäre es mölglich:
C#-Quelltext
1: 2: 3: 4:
| MyEnum vaue = MyEnum.Value1; int number = (int) value; number++; value = (MyEnum) number; |
Grüße,
Yogu
Kha - So 13.11.11 23:17
Wenn es wirklich nur um die Ausgabe geht, wäre ein Index auf ein String-Array wahrscheinlich die einfachere Variante :) .
Th69 - Mo 14.11.11 10:51
Hallo,
klar geht es mit dem ++ bzw. -- Operator:
C#-Quelltext
1: 2: 3: 4: 5:
| enum X { A, B, C };
X x = X.A; x++; x--; |
s.a.
Prefix increment and decrement operators [
http://msdn.microsoft.com/en-us/library/aa691369.aspx]
Zitat: |
Predefined ++ and -- operators exist for the following types: sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, and any enum type
|
Scofield2011 - Mo 14.11.11 22:05
Yogu hat folgendes geschrieben : |
Wozu willst du es denn machen? |
Verwenden möchte ich es zur Anzeigen von mathematischen Reihen. Ich habe zum Beispiel eine Enumeration für Primzahlen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| public enum PrimZahlen { PZ1 = 2, PZ2 = 3, PZ3 = 5, PZ4 = 7, PZ5 = 11, PZ6 = 13 } |
Mit Buttons möchte ich dann zur nachfolgenden bzw. vorherigen springen. Die jeweilige Zahl soll dann, wie erwähnt, in einem Textfeld angezeigt werden.
Mit dem ++ Operator hatte ich es schon probiert, aber das geht leider nicht, wenn ich zum Beispiel von der zweiten Primzahl (PZ2) zur dritten springen will kommt da als Wert nicht 5 sondern 4 raus. Außerdem hat dann meine Variable vom Typ PrimZahlen keinen Wert mehr von dem Typ sondern direkt den Wert.
Das Problem hierbei ist wahrscheinlich, dass die Indizes nicht wie üblich jeweils gegenüber dem Vorgänger um 1 erhöht sind.
Th69 - Mo 14.11.11 22:12
Hallo,
dafür nimm besser ein Array bzw. eine List<int> und laß den Index hoch- und runterzählen.
Ein Enum verwendet man nur, wenn man ein lesbares Wort (anstelle eines internen Wertes - ein sog. "Magic Value") im Code schreiben möchte (aber du willst sicherlich nicht PZ1 anstelle der Zahl 2 schreiben).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!