Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs

Kontrollstatements in C#

Geschrieben von: Christoph Wille
Kategorie: C#

This printed page brought to you by AlphaSierraPapa

In diesem Artikel möchte ich die beiden C# ("C Sharp") Kontrollstatements if und switch vorstellen, und zwar mit besonderem Fokus darauf, was man als VBScript Programmierer beachten muß, um nicht in Fallen zu tappen. Wer bereits C++ oder JScript programmiert hat, wird die neuen if und switch Statements sehr einfach erlernen können, da sie beinahe ident zu den bereits erlernten sind.

Voraussetzung um den Sourcecode dieses Artikels verwenden zu können ist eine Installation des Microsoft .NET Framework SDK's auf einem Webserver. Weiters setze ich voraus, daß der Leser bereits eine Programmiersprache beherrscht - deshalb ist die Information auch in sehr komprimierter Form gehalten.

Das if Statement

Schauen wir uns einmal das If Statement in VBScript nochmals an:

If (Boolscher Ausdruck) Then
...
Else
...
End If

Ich habe einen boolschen Ausdruck, der bestimmt, welcher Zweig des If Statements ausgeführt. In C# sieht das Ganze nicht viel anders aus:

if (Boolscher Ausdruck) statement

Der Unterschied ist, daß das if-Keyword in Kleinbuchstaben zu schreiben ist (C# ist Case-Sensitive!), und daß das Then Keyword fehlt. Sollen mehrere Statements in einem if Block ausgeführt werden, so muß man diesen Block in geschwungenen Klammern einschließen:

if (Boolscher Ausdruck)
{
}

C++ Programmierer kennen das ja schon - alle Codeblocks müssen in geschwungenen Klammern eingeschlossen werden. Wenn man die geschwungenen Klammern vergisst, dann wird nur das erste Statement ausgeführt. Also aufpassen!

Kommen wir nun zu einem praktischen Beispiel - wir bauen eine ASP.NET Seite, lesen einen Querystringparameter aus, und geben je nach Wert eine entsprechende Meldung aus:

<% @Page Language="C#" %>
<%
string strQString = Request.QueryString.Get("TestParam");
int nValue = Convert.ToInt32(strQString);

if (5 == nValue)
{
  Response.Write("Sie haben die Zahl 5 eingegeben!");
}
else
{
  Response.Write("Die Zahl ist verschieden von 5!");
}
%>

Speichern Sie diese Datei unter dem Namen iftest.aspx auf dem Webserver, auf dem Sie das .NET Framework installiert haben. Der Aufruf sieht wie folgt aus:

http://localhost/iftest.aspx?TestParam=5

Sollten Sie vergessen, die Seite mit dem Parameter aufzurufen, dann wird automatisch der Wert 0 angenommen, weil an Convert.ToInt32 ein null Objekt übergeben wird.

In der ersten Zeile definiere ich, daß ASP.NET diese Seite mit C# kompilieren soll (@Page Direktive). Danach lese ich den Parameter TestParam ein, weise das Ergebnis einer Stringvariablen zu, um es dann in der nächsten Zeile in eine Integervariable zu konvertieren (Details dazu in späteren Artikeln). Man könnte zwar mit dem Typ object dieser Konvertierung entgehen, allerdings sollte man sich das gar nicht erst anfangen.

Das if Statement ist nicht kompliziert, nur speziell hinweisen muß ich auf den Vergleichoperator ==. In C# wird der Vergleich mit doppelten Ist-Gleich Zeichen durchgeführt, nicht mit einem einfachen wie in VBScript! Folgende Vergleichsoperatoren gilt es zu beachten:

Der Rest ist bereits bekannt aus VBScript.

Wie sieht es nun aber aus, wenn man UND beziehungsweise ODER Verknüpfungen machen möchte? Zum Beispiel (Pseudocode)

Falls (Tag ist Dienstag UND Tageszeit > Mittags)

In VBScript würde das so aussehen:

If (nDay = vbTuesday And dTime > 12) Then

Der einzige Unterschied in C# ist, daß das And durch && ersetzt werden muß:

if (nDay == vbTuesday && dTime > 12)

Folgende Operatoren gibt es:

Damit haben wir alle Unterschiede besprochen, die das if Statement von C# mit sich bringt, und können mit dem nächsten Kontrollstatement weitermachen: switch.

Das switch Statement

Obwohl einem dieses Statement nicht auf Anhieb bekannt vorkommt, ist es das C# Äquivalent zu Select Case:

Select Case nNote
  Case 1
  	Response.Write "Sehr gut!"
  Case 5
  	Response.Write "Bombastisch!"
  Case Else
    ' alles andere interessiert uns nicht
End Select

Umgebaut in C# sieht es wie folgt aus:

switch (nNote)
{
  case 1:
    Response.Write("Sehr gut!");
    break;
  case 5:
    Response.Write("Bombastisch!");
    break;
  default:
    // alles andere interessiert uns nicht
    break;
}

Der wichtige Unterschied ist, daß man hinter das letzte Statement eines case Labels ein break Statement schreiben muß (in VBScript ist das nicht nötig). Man muß sich also nur die neue Syntax merken, und schon kann man auch das switch Statement verwenden.

Schlußbemerkung

Die if und switch Statements bergen keine großen Überraschungen, man muß nur aufpassen und bei der Syntax am Anfang mitdenken, da die Gleichheits- bzw. Ungleichheitsoperatoren im if Statement doch deutlich verschieden sind. Zum Trost: der Compiler klopft einem doch deutlich und bestimmt auf die Finger...

This printed page brought to you by AlphaSierraPapa

Download des Codes

Klicken Sie hier, um den Download zu starten.
http://www.aspheute.com/code/20000714.zip

Verwandte Artikel

A Brief History of C#
http:/www.aspheute.com/artikel/20000713.htm
Das foreach Statement
http:/www.aspheute.com/artikel/20000720.htm
Dateiupload mit ASP.NET
http:/www.aspheute.com/artikel/20000802.htm
Deutsche Personalausweisnummern verifizieren
http:/www.aspheute.com/artikel/20020507.htm
Formularbasierte Authentifizierung in fünf Minuten
http:/www.aspheute.com/artikel/20020705.htm
Schleifenbefehle in C#
http:/www.aspheute.com/artikel/20000717.htm
Wochenberechnung mit .NET
http:/www.aspheute.com/artikel/20020905.htm

Links zu anderen Sites

Die aspDEdotnet Diskussionsliste
http://www.aspgerman.com/aspgerman/listen/anmelden/aspDEdotnet.asp
Presenting C#
http://www.amazon.com/exec/obidos/ASIN/0672320371/alphasierrapapa

 

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.