Compiler Fehler mit C # bedingten Operator

7

Ich kann anscheinend nicht finden, was ich auf Google brauche, und wette, ich werde eine schnelle Antwort hier bekommen.

%Vor%

das? : Syntax sieht für mich korrekt aus. Ich bekomme jedoch einen Compilerfehler.

  

Programm.cs (13,28):
  Fehler CS1002:; erwartetes
  Programm.cs (13,28):
  Fehler CS1525: Ungültiger Ausdrucksterm ':'
  Programm.cs (13,30):
  Fehler CS1002:; erwartet

Nicht sicher über die csharp-Syntax, aber das baut in cpp. Bitte helfen Sie! Danke!

UPDATE: Etwa 10 von euch geben die richtige Antwort LOL, also werde ich nur an die erste Person vergeben, die sie eingereicht hat.

interessante Syntax, und ich denke, ich mag es eigentlich besser als C ++ Syntax.

Der eigentliche Code, für den ich das tue, ist:

%Vor%     
cchampion 02.03.2010, 19:09
quelle

7 Antworten

15

Ihr Code sollte lauten:

%Vor%

Dies entspricht jedoch nur dem Aufruf von b.ToString().ToLower() . Das heißt, ich vermute, dass Ihr tatsächlicher Anwendungsfall etwas komplexer ist, als nur den booleschen Wert in eine Zeichenkette umzuwandeln.

Aktualisieren
Wie in den Kommentaren angegeben, ist die Bedingung Operator gibt einen Wert zurück; Es ist nicht für den Kontrollfluss wie if / else .

    
Jeff Yates 02.03.2010, 19:10
quelle
15
%Vor%

Aber Sie könnten das einfach tun:

%Vor%

Oder schneiden Sie sogar den Mittelsmann ganz aus:

%Vor%     
Kent Boogaart 02.03.2010 19:10
quelle
4

Der ternäre Operator erlaubt keine Statement-Umschaltung, nur Wertumschaltung. Sie möchten dies tun:

%Vor%

(offensichtlich b.ToString() ) ist eine bessere Lösung für dieses spezielle Problem, aber ich gehe davon aus, dass dies nur ein Beispiel ist).

    
Adam Robinson 02.03.2010 19:11
quelle
2

Was alle anderen sagten, und: Ссылка

    
Yoopergeek 02.03.2010 19:12
quelle
1
%Vor%     
RC. 02.03.2010 19:10
quelle
0

Der ternäre Operator kann nicht die oberste Ebene einer Anweisung in C # sein, da C # erfordert, dass Ausdrücke der obersten Ebene einen Nebeneffekt haben.

    
Ben Voigt 02.03.2010 19:12
quelle
-1

Nur aus Neugier, warum nicht einfach:

%Vor%

In .NET konvertieren Werttypen ihren Wert automatisch in eine Zeichenfolge, wenn .ToString () aufgerufen wird ... einschließlich boolescher Werte.

    
jrista 02.03.2010 19:12
quelle

Tags und Links