Autor |
Beitrag |
Scofield2011
      
Beiträge: 55
Windows XP, Windows 7, Windows 8
C#, VBA, VB
|
Verfasst: So 13.11.11 21: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 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
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: 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
      

Beiträge: 4798
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: 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
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 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
      

Beiträge: 4798
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: 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).
|
|
|