www.mikrocontroller.net

Forum: PC-Programmierung C# switch case Anweisung mit VS 2005


Autor: Marcus Schlinn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Jo Sen (tigermatze)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

hast du auch die Klasse System eingebunden? Weil in c# der Datentyp byte 
von der Klasse System abgelitten wird (using System;).

mfg

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?
#define TTA 0
#define TTB 1

switch(..)
{ 
case TTA: break;
case TTB: break;
}

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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...
const byte TTA = 1;
// oder
enum EnumName : byte {
    TTA = 1, TTB = 2
};
// wenn es Flags sind (z.B. TTA = 8, TTB = 16, TTC = 32), dann 
[FlagsAttribute] 
enum FlagsName : byte {
    TTA = 8, TTB = 16, TTC = 32
};

Autor: Marcus Schlinn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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..?

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.