| 
| Autor | Beitrag |  
| Scofield2011 
          Beiträge: 55
 
 Windows XP, Windows 7, Windows 8
 C#, VBA, VB
 
 | 
Verfasst: So 13.11.11 20:15 
 
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 
          Beiträge: 2598
 Erhaltene Danke: 156
 
 Ubuntu 13.04, Win 7
 C# (VS 2013)
 
 | 
Verfasst: So 13.11.11 20: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 
          Beiträge: 3803
 Erhaltene Danke: 176
 
 Arch Linux
 Python, C, C++ (vim)
 
 | 
Verfasst: So 13.11.11 22:17 
 
Wenn es wirklich nur um die Ausgabe geht, wäre ein Index auf ein String-Array wahrscheinlich die einfachere Variante    ._________________ >λ=
 |  |  |  
| Th69 
          
  Beiträge: 4800
 Erhaltene Danke: 1059
 
 Win10
 C#, C++ (VS 2017/19/22)
 
 | 
Verfasst: Mo 14.11.11 09: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 	  | 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  
          Beiträge: 55
 
 Windows XP, Windows 7, Windows 8
 C#, VBA, VB
 
 | 
Verfasst: Mo 14.11.11 21: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 
          
  Beiträge: 4800
 Erhaltene Danke: 1059
 
 Win10
 C#, C++ (VS 2017/19/22)
 
 | 
Verfasst: Mo 14.11.11 21: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).
 |  |  |  |