2016-07-08 6 views
4

Ich schreibe ein textbasiertes Abenteuer und habe ein Problem. Ich versuche, eine switch-Anweisung Fall zu machen, die jede Prüfung Aktion behandelt werden soll, und bin immer für meine Code so weit:Kann ich eine Variable in einer switch-Anweisung verwenden?

case "examine" + string x: 
    //this is a method that I made that makes sure that it is an object in the area 
    bool iseobj = tut.Check(x); 
    if (iseobj) 
     x.examine(); 
    else 
     Console.WriteLine("That isn't an object to examine"); 
    break; 

Wie verwende ich eine Variable in meiner case Aussage? Ich möchte jede Zeichenfolge, die mit "untersuchen" + (x) beginnt, um den Fall auszulösen.

+1

Sie meinen, Sie wollen dies als eine Variable 'Console.WriteLine (" Das ist kein Objekt zu untersuchen ");'? – DestinatioN

+2

Fälle in switch-Anweisung müssen konstant sein. es kann keine Variablen enthalten –

+0

Ich habe Ihre Frage bearbeitet, um klarer zu sein, lassen Sie mich wissen, wenn ich es richtig verstanden habe :) –

Antwort

5

Ihr Szenario würde in eine if-else Aussage besser passen als eine switch Aussage. In C# kann eine switchonly evaluate values, nicht Ausdrücke. Das heißt, Sie nicht tun:

case input.StartsWith("examine"): 

jedoch Sie diese Arbeit mit einem if Aussage machen kann! Überlegen Sie Folgendes:

if (input.StartsWith("examine")) 
{ 
    //this is a method that I made that makes sure that it is an object in the area 
    bool iseobj = tut.Check(x); 
    if (iseobj) 
     x.examine(); 
    else 
     Console.WriteLine("That isn't an object to examine"); 
} 
else if (...) // other branches here 
+1

Sollte 'case StartsWith (' '' lesen eingabe.StartsWith ('? Ansonsten lustig gute Antwort – MickyD

+1

@MickyD Danke für die Fangen Sie! –

+1

@ Fireball175 Wenn Sie Ihre 'x' Variable erhalten möchten, könnten Sie string x = s.Split (new [] {" untersuchen "}, StringSplitOptions.RemoveEmptyEntries) [0]' innerhalb der 'if'. –

Verwandte Themen