2016-04-17 4 views
3

Ich erstellte dieses asp.net-Programm mit Switch Case-Anweisung, um die aktuelle datetime.now.hour in C# zu bestimmen. Wenn ich es kompiliere passiert nichts, nicht einmal Fehlerkommentare. Ich glaube, dass ich nah daran bin, es zur Arbeit zu bringen, aber ich muss in die richtige Richtung zeigen. Ich würde mich über hilfreiche Vorschläge freuen. Ich glaube, mein Problem ist nicht genau zu wissen, wie man die Variable korrekt in den richtigen Datentyp konvertiert. Ich bin wirklich neu in asp.net und ich lerne C#, während ich übe. Ich habe etwas Erfahrung in C++. Hier ist mein Code.asp.net mit Switch-Fall in C# für datetime.now.hour Format

<% Page Language="C#"%> 
<script runat="server"> 
void Page_Load(Object sender, EventArgs e) 
{ 
int h= Convert.ToInt32(DateTime.Now.ToString("HH"); 
switch (h) 
{ 
case (h>12): lblMsg.Text="One O'clock!"; break; 
case (h>12): lblMsg.Text="Two O'clock!"; break; 
case (h>12): lblMsg.Text="Three O'clock!"; break; 
case (h>12): lblMsg.Text="Four O'clock!"; break; 
case (h>12): lblMsg.Text="Five O'clock!"; break; 
case (h>12): lblMsg.Text="Six O'clock!"; break; 
case (h>12): lblMsg.Text="Seven O'clock!"; break; 
case (h>12): lblMsg.Text="Eight O'clock!"; break; 
case (H>12): lblMsg.Text="Nine O'clock!"; break; 
case (H>12): lblMsg.Text="Ten O'clock!"; break; 
case (H>12): lblMsg.Text="Eleven O'clock!"; break; 
default: lblMsg.Text="Twelve O'clock!"; break; 
} 
} 
<script> 
<!doctype html> 
<head> 
</head> 
<body> 
<asp:Label id="lb1Msg" runat="server" /> 
<html> 
+0

Sie könnten wechseln (true) und lassen Sie den Rest so wie es ist, da die Ausdrücke bool (h> 12 es ist entweder wahr oder falsch) zurück, aber in Ihrem Fall glaube ich nicht, es würde Sinn machen ... Fall 1, Fall 2 ..... Fall 24. – Spluf

+0

Beachten Sie, dass das [HH-Format] (https://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx) einen Wert (String) gibt von "00" bis "23". –

Antwort

3

Jedes Fall Etikett spezifiziert einen konstanten Wert. Die Schalter Anweisung überträgt die Kontrolle an die Schalter Abschnitt, deren Fall Etikett entspricht dem Wert der Schalter Ausdruck. Wenn kein Fall Etikett einen übereinstimmenden Wert enthält, wird die Kontrolle an den Standardabschnitt übertragen, falls es einen gibt. Wenn es keinen Standardabschnitt gibt, wird keine Aktion ausgeführt, und die Steuerung wird außerhalb der -Anweisung Anweisung übertragen.

switch (h) 
{ 
    case 1: lblMsg.Text="One O'clock!"; break; 
    case 2: lblMsg.Text="Two O'clock!"; break; 
    case 3: lblMsg.Text="Three O'clock!"; break; 
    case 4: lblMsg.Text="Four O'clock!"; break; 
    case 5: lblMsg.Text="Five O'clock!"; break; 
    case 6: lblMsg.Text="Six O'clock!"; break; 
    case 7: lblMsg.Text="Seven O'clock!"; break; 
    case 8: lblMsg.Text="Eight O'clock!"; break; 
    case 9: lblMsg.Text="Nine O'clock!"; break; 
    case 10: lblMsg.Text="Ten O'clock!"; break; 
    case 11: lblMsg.Text="Eleven O'clock!"; break; 
    default: lblMsg.Text="Twelve O'clock!"; break; 
} 

Sie verwenden einen Ausdruck mit Fall während es Konstanten erwarten ist.

+0

Okay, danke dafür. Also war der Ausdruck (h> 12), was in Ordnung gewesen wäre, wenn ich eine if else-Anweisung verwendet hätte. Ich habe die Korrektur gemacht, aber mein Code kompiliert nicht. Ich hatte ein paar Fehler. Ich versuche jetzt, sie zu debuggen. – swydell