Hallo! Ich habe ein Problem, keine Ahnung wo mein Denkfehler bei der switch case Anweisung ist. Wenn ich für meine switch case Anweisung die einzelnen unterschiedlichen Fälle mit Werten definiere möchte bekomme ich jedemal ne Fehlermeldung, das mit der Konstante etwas nicht in Ordnung ist. case 0: case 1: Wenn ich jetzt für 0 und 1 eine Konstante definieren möchte, ging das in C Sparche ohne Probleme. Mit C# oder VS 2005 habe ich Probleme. Wieso kann ich nicht einfach byte TTA = 0; byte TTB = 1; switch(..) { case TTA: break; case TTB: break; } in einem Program schreiben..? Selbst mit byte[] TTA = new byte[] { 0x00 }; ist der Compiler am meckern..!! Please Help!
Hi, hast du auch die Klasse System eingebunden? Weil in c# der Datentyp byte von der Klasse System abgelitten wird (using System;). mfg
Hmm..klar dass der Compiler meckert. Eine Variable als Vergleich wird nicht klappen. Man kann eine Variable auf verschiedene konstante Audrücke testen. Ich schätze mal, du wolltest eher sowas in der Art?
1 | #define TTA 0
|
2 | #define TTB 1
|
3 | |
4 | switch(..) |
5 | {
|
6 | case TTA: break; |
7 | case TTB: break; |
8 | }
|
> Wenn ich jetzt für 0 und 1 eine Konstante definieren möchte, ging das in > C Sparche ohne Probleme. Mit C# oder VS 2005 habe ich Probleme. Einfach eine Konstante und keine Variable definieren...
1 | const byte TTA = 1; |
2 | // oder
|
3 | enum EnumName : byte { |
4 | TTA = 1, TTB = 2 |
5 | };
|
6 | // wenn es Flags sind (z.B. TTA = 8, TTB = 16, TTC = 32), dann
|
7 | [FlagsAttribute] |
8 | enum FlagsName : byte { |
9 | TTA = 8, TTB = 16, TTC = 32 |
10 | };
|
Hallo ! Wie kann ich denn die Enumeration öffentlich für andere Methoden nutzen. Mit public meckert mein Compiler wiederum rum, da ich das TTA und TTB in einer anderen Methode nutze und ihr diese nicht kennt. The name 'TTA' does not exist in the current context enum EnumName : byte { TTA = 1, TTB = 2 }; Was tun, ich dachte mit public enum EnumName : byte {...} wäre dies in Ordnung..?
Der Name der enum muss immer mitangegeben werden (ala EnumName.TTA). Will man in anderen Klassen nicht ClassName.EnumName.TTA schreiben, muss die Definition aus der Klasse raus. p.s. die Angabe byte beim enum sagt nur etwas über die "maximale Anzahl" der Werte, aber nichts über deren Typ. D.h. bei switch/case muss man trotzdem casten.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.