Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort zur 6. Auflage
1 Allgemeine Einführung in .NET
2 Grundlagen der Sprache C#
3 Das Klassendesign
4 Vererbung, Polymorphie und Interfaces
5 Delegates und Ereignisse
6 Strukturen und Enumerationen
7 Fehlerbehandlung und Debugging
8 Auflistungsklassen (Collections)
9 Generics – Generische Datentypen
10 Weitere C#-Sprachfeatures
11 LINQ
12 Arbeiten mit Dateien und Streams
13 Binäre Serialisierung
14 XML
15 Multithreading und die Task Parallel Library (TPL)
16 Einige wichtige .NET-Klassen
17 Projektmanagement und Visual Studio 2012
18 Einführung in die WPF und XAML
19 WPF-Layout-Container
20 Fenster in der WPF
21 WPF-Steuerelemente
22 Elementbindungen
23 Konzepte von WPF
24 Datenbindung
25 Weitere Möglichkeiten der Datenbindung
26 Dependency Properties
27 Ereignisse in der WPF
28 WPF-Commands
29 Benutzerdefinierte Controls
30 2D-Grafik
31 ADO.NET – Verbindungsorientierte Objekte
32 ADO.NET – Das Command-Objekt
33 ADO.NET – Der SqlDataAdapter
34 ADO.NET – Daten im lokalen Speicher
35 ADO.NET – Aktualisieren der Datenbank
36 Stark typisierte DataSets
37 Einführung in das ADO.NET Entity Framework
38 Datenabfragen des Entity Data Models (EDM)
39 Entitätsaktualisierung und Zustandsverwaltung
40 Konflikte behandeln
41 Plain Old CLR Objects (POCOs)
Stichwort

Download:
- Beispiele, ca. 62,4 MB

Jetzt Buch bestellen
Ihre Meinung?

Spacer
Visual C# 2012 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2012

Visual C# 2012
Rheinwerk Computing
1402 S., 6., aktualisierte und erweiterte Auflage 2013, geb., mit DVD
49,90 Euro, ISBN 978-3-8362-1997-6
Pfeil 2 Grundlagen der Sprache C#
Pfeil 2.1 Konsolenanwendungen
Pfeil 2.1.1 Allgemeine Anmerkungen
Pfeil 2.1.2 Ein erstes Konsolenprogramm
Pfeil 2.2 Grundlagen der C#-Syntax
Pfeil 2.2.1 Kennzeichnen, dass eine Anweisung abgeschlossen ist
Pfeil 2.2.2 Anweisungs- und Gliederungsblöcke
Pfeil 2.2.3 Kommentare
Pfeil 2.2.4 Die Groß- und Kleinschreibung
Pfeil 2.2.5 Die Struktur einer Konsolenanwendung
Pfeil 2.3 Variablen und Datentypen
Pfeil 2.3.1 Variablendeklaration
Pfeil 2.3.2 Der Variablenbezeichner
Pfeil 2.3.3 Der Zugriff auf eine Variable
Pfeil 2.3.4 Ein- und Ausgabemethoden der Klasse »Console«
Pfeil 2.3.5 Die einfachen Datentypen
Pfeil 2.3.6 Typkonvertierung
Pfeil 2.4 Operatoren
Pfeil 2.4.1 Arithmetische Operatoren
Pfeil 2.4.2 Vergleichsoperatoren
Pfeil 2.4.3 Logische Operatoren
Pfeil 2.4.4 Bitweise Operatoren
Pfeil 2.4.5 Zuweisungsoperatoren
Pfeil 2.4.6 Stringverkettung
Pfeil 2.4.7 Sonstige Operatoren
Pfeil 2.4.8 Operator-Vorrangregeln
Pfeil 2.5 Datenfelder (Arrays)
Pfeil 2.5.1 Die Deklaration und Initialisierung eines Arrays
Pfeil 2.5.2 Der Zugriff auf die Array-Elemente
Pfeil 2.5.3 Mehrdimensionale Arrays
Pfeil 2.5.4 Festlegen der Array-Größe zur Laufzeit
Pfeil 2.5.5 Bestimmung der Array-Obergrenze
Pfeil 2.5.6 Die Gesamtanzahl der Array-Elemente
Pfeil 2.5.7 Verzweigte Arrays
Pfeil 2.6 Kontrollstrukturen
Pfeil 2.6.1 Die »if«-Anweisung
Pfeil 2.6.2 Das »switch«-Statement
Pfeil 2.7 Programmschleifen
Pfeil 2.7.1 Die »for«-Schleife
Pfeil 2.7.2 Die »foreach«-Schleife
Pfeil 2.7.3 Die »do«- und die »while«-Schleife

Rheinwerk Computing - Zum Seitenanfang

2.2 Grundlagen der C#-SyntaxZur nächsten Überschrift


Rheinwerk Computing - Zum Seitenanfang

2.2.1 Kennzeichnen, dass eine Anweisung abgeschlossen istZur nächsten ÜberschriftZur vorigen Überschrift

C#-Programme setzen sich aus vielen Anweisungen zusammen, die der Reihe nach ausgeführt werden. Anweisungen legen fest, was das Programm zu tun hat und auf welche Art und Weise es das tut. Sie haben im vorherigen Abschnitt bereits Ihr erstes, wenn auch sehr kleines Programm, bestehend aus zwei Anweisungen, geschrieben:

Console.WriteLine("C# macht Spaß.");
Console.ReadLine();

Jede Anweisung verlangt nach einer Kennzeichnung, die das Ende der Anweisung bekannt gibt. Dazu wird in C# das Semikolon eingesetzt. Wenn Sie das Semikolon vergessen, erhalten Sie einen Kompilierfehler. Im vorhergehenden Abschnitt hatten wir das sogar provoziert. Auch wenn das sinnlos ist, dürfen Sie durchaus mehrere Semikolons hintereinanderschreiben, ohne dass explizit eine Anweisung dazwischenstehen muss:

;;;;

Weil durch ein Semikolon eine Anweisung eindeutig abgeschlossen wird, dürfen auch mehrere Anweisungen in eine Zeile geschrieben werden. Im Umkehrschluss kann eine Anweisung auch problemlos auf mehrere Zeilen verteilt werden, ohne dass es den Compiler stört.

Bei der Gestaltung des Programmcodes lässt C# Ihnen sehr viele Freiheiten. Leerzeichen, Tabulatoren und Zeilenumbrüche können nach Belieben eingestreut werden, ohne dass sich das auf die Kompilierung des Quellcodes oder die Ausführung des Programms auswirkt. Daher dürfte der Code unseres Beispiels auch wie folgt aussehen:

Console.
WriteLine("C# macht Spaß.") ;
Console.
ReadLine (
)
;

Listing 2.3 »Streuung« des Programmcodes

Dass eine Streuung wie die gezeigte die gute Lesbarkeit des Codes enorm beeinträchtigt, steht außer Frage. Aber C# führt diesen Code dennoch genauso aus wie zuvor. Andererseits kann man insbesondere mit den Tabulatoren über Einrückungen zu einer guten Lesbarkeit des Programmcodes beitragen. Vergleichen Sie dazu wieder das Beispiel von oben. Anweisungen, die innerhalb eines Anweisungsblocks in geschweiften Klammern stehen, werden üblicherweise nach rechts eingerückt. Wenn Sie sich an den Beispielen in diesem Buch orientieren, werden Sie sehr schnell ein Gefühl dafür bekommen, wie Sie mit Einrückungen optisch ansprechenden und leichter lesbaren Code schreiben. Feste Regeln gibt es dazu allerdings nicht, es sind stillschweigende Konventionen.


Rheinwerk Computing - Zum Seitenanfang

2.2.2 Anweisungs- und GliederungsblöckeZur nächsten ÜberschriftZur vorigen Überschrift

C#-Programmcode ist blockorientiert, d. h., dass C#-Anweisungen grundsätzlich immer innerhalb eines Paars geschweifter Klammern geschrieben werden. Jeder Block kann eine beliebige Anzahl von Anweisungen enthalten – oder auch keine. Somit hat ein Anweisungsblock allgemein die folgende Form:

{
Anweisung 1;
Anweisung 2;
[...]
}

Listing 2.4 Einfacher Anweisungsblock

Anweisungsblöcke lassen sich beliebig ineinander verschachteln. Dabei beschreibt jeder Anweisungsblock eine ihm eigene Ebene, z. B.:

{
Anweisung 1;
{
Anweisung 2;
Anweisung 3;
}
Anweisung 4;
}

Listing 2.5 Verschachtelte Anweisungsblöcke

Beachten Sie, wie Einzüge hier dazu benutzt werden, optisch die Zugehörigkeit einer oder mehrerer Anweisungen zu einem bestimmten Block aufzuzeigen. Die Anweisungen 2 und 3 sind zu einem Block zusammengefasst, der sich innerhalb eines äußeren Blocks befindet. Zum äußeren Anweisungsblock gehören Anweisung 1 und Anweisung 4 sowie natürlich auch der komplette innere Anweisungsblock.

Außer zur Blockbildung von Anweisungen werden die geschweiften Klammern dazu benutzt, Definitionsbereiche zu bilden. Beispielsweise lassen sich mehrere Klassendefinitionen damit einem Namespace zuordnen. Um dieses Thema zu erörtern, ist es allerdings noch zu früh.


Rheinwerk Computing - Zum Seitenanfang

2.2.3 KommentareZur nächsten ÜberschriftZur vorigen Überschrift

Sie sollten nicht mit Kommentaren geizen. Kommentare helfen, den Programmcode der Anwendung besser zu verstehen. Sie tun nicht nur den Entwicklern damit einen Gefallen, die sich mit Ihrem Code auseinandersetzen müssen, sondern auch sich selbst. Wenn Sie bereits Programmiererfahrung haben, werden Sie wissen, wie schwierig es ist, nach dem 4-wöchigen Australien-Urlaub wieder den eigenen Code zu verstehen J. Ersparen Sie sich und anderen die unnötige und zeitraubende Suche nach den Antworten.

C# bietet zwei Möglichkeiten, um Kommentare, die vom Compiler während des Kompiliervorgangs ignoriert werden, in den Quellcode einzustreuen. Die am häufigsten benutzte Variante ist die Einleitung eines Kommentars mit zwei Schrägstrichen »//«:

// dies ist ein Kommentar

Ein »//«-Kommentar gilt für den Rest der gesamten Codezeile, kann jedes beliebige Zeichen enthalten und darf auch nach einer abgeschlossenen Anweisung stehen.

Console.WriteLine("..."); //Konsolenausgabe

Sollen viele zusammenhängende Zeilen zu einem längeren Kommentar zusammengefasst werden, bietet sich die zweite Alternative an, bei der ein Kommentar mit »/*« eingeleitet und mit »*/« abgeschlossen wird. Alle Zeichen, die sich dazwischen befinden, sind Bestandteil des Kommentars.

/* Console.WriteLine("..."); 
Console.ReadLine();*/

Tatsächlich kann man sogar mitten in einer Anweisung diesen Kommentar schreiben, ohne dass der C#-Compiler das als Fehler ansieht:

Console.WriteLine /* Kommentar */("...");

Die Entwicklungsumgebung des Visual Studio 2012 bietet eine recht interessante und einfache Alternative, um insbesondere größere Blöcke auf einen Schlag auszukommentieren. Sie müssen dazu nur sicherstellen, dass in der Entwicklungsumgebung die Symbolleiste Text-Editor angezeigt wird. Dazu brauchen Sie nur mit der rechten Maustaste das Kontextmenü einer der aktuellen Symbolleisten zu öffnen. Im Kontextmenü finden Sie alle Symbolleisten der Entwicklungsumgebung aufgelistet. Da die Anzahl als nicht gering bezeichnet werden kann, lassen sich die einzelnen Symbolleisten nach Bedarf ein- oder ausblenden.

Die Symbolleiste Text-Editor enthält zwei Schaltflächen, um markierte Codeblöcke auszukommentieren oder eine Kommentierung wieder aufzuheben (siehe Abbildung 2.2).

Abbildung

Abbildung 2.2 Kommentare mithilfe der Symbolleiste

In diesem Buch werden alle Kommentare grau hinterlegt, um auf einen Blick deutlich zwischen Code und Kommentar unterscheiden zu können.


Rheinwerk Computing - Zum Seitenanfang

2.2.4 Die Groß- und KleinschreibungZur nächsten ÜberschriftZur vorigen Überschrift

C# gehört zu der Gruppe von Programmiersprachen, die zwischen Groß- und Kleinschreibung unterscheiden. Falls Sie die Anweisung zur Konsolenausgabe mit

Console.Writeline("...");

codieren, werden Sie bei der Kompilierung mit einer Fehlermeldung konfrontiert. Korrekt müsste es lauten:

Console.WriteLine("...");

Die Folge ist, dass zwei gleich lautende Bezeichner, die sich nur durch Groß- und Kleinschreibung unterscheiden, in C# auch für zwei unterschiedliche Programmelemente stehen.


Rheinwerk Computing - Zum Seitenanfang

2.2.5 Die Struktur einer KonsolenanwendungZur vorigen Überschrift

Sehen Sie sich noch einmal das Listing 2.1 an. Dabei handelt es sich um den Code, den uns die Entwicklungsumgebung nach dem Öffnen eines neuen Projekts erzeugt.

Wir erkennen nun mehrere verschachtelte Blockstrukturen. Der äußere Block definiert einen Namespace mit dem Namen ConsoleApplication1. Namespaces dienen zur Sicherstellung der Eindeutigkeit eines Bezeichners (hier der Klasse Program). Wir kommen auf die Details der Namespaces am Ende von Kapitel 3 noch einmal genau zu sprechen.

Im Namespace eingebettet ist eine Klassendefinition, die einen eigenen Anweisungsblock beschreibt:

namespace ConsoleApplication1 
{
class Program
{
}
}

Listing 2.6 Im Namespace eingebettete Klassendefinition

C# ist eine 100%ig objektorientierte Sprache. Das bedeutet, dass grundsätzlich immer eine Klassendefinition vorliegen muss, um mit einem Objekt arbeiten zu können. Eine Klasse beschreibt einen Typ, und in unserem Fall heißt dieser Typ Program. Der Bezeichner Program ist nur als Vorschlag der Entwicklungsumgebung anzusehen und darf innerhalb des aktuellen Namespaces (hier also ConsoleApplication1) frei vergeben werden, solange die Eindeutigkeit innerhalb des Namespaces gewährleistet bleibt.

Wie Sie sehen, kommen wir schon an dieser Stelle zum ersten Mal mit Klassen in Berührung. Was eine Klasse darstellt und wie man sie einsetzt, wird einen wesentlichen Teil der ersten Kapitel dieses Buches ausmachen. Wir wollen es hier aber zunächst bei dieser kurzen Erwähnung belassen, denn in diesem Kapitel werden Sie die grundlegende Syntax von C# lernen, ohne die Gesichtspunkte des objektorientierten Paradigmas zu berücksichtigen.

Interessanter ist für uns momentan die dritte Blockebene, die innerhalb der Klasse Program vordefiniert ist und die Methode Main beschreibt:

static void Main(string[] args) 
{
}

Bei Main handelt es sich um eine Methode, die für uns von herausragender Bedeutung ist: Wenn wir die Laufzeitumgebung einer eigenstartfähigen Anwendung starten, wird zuerst Main ausgeführt. Sie dürfen den Namen dieser Prozedur auch nicht ändern und müssen natürlich auch die Großschreibweise berücksichtigen, denn beim Start der Laufzeitumgebung wird immer nach Main gesucht und nicht nach main oder nach start.

Weiter oben wurde gesagt, dass Anweisungen immer innerhalb eines Blocks aus geschweiften Klammern codiert werden. Wir können diese Aussage nun präzisieren: Anweisungen werden grundsätzlich immer innerhalb des Anweisungsblocks einer Methode implementiert. Wir haben das schon bei unserem ersten Beispiel gesehen:

static void Main(string[] args) 
{
Console.WriteLine("C# macht Spaß.");
Console.ReadLine();
}

In prozeduralen Programmiersprachen werden meistens die Begriffe »Prozedur« oder »Funktion« verwendet. Eine Methode ist im Grunde genommen nichts anderes als eine Prozedur oder Funktion.

Sehen wir uns noch kurz die Definition der Main-Methode an. Die beiden dem Bezeichner vorausgehenden Schlüsselwörter static und void sind zwingend notwendig. Sollten Sie bereits mit C++ oder Java Anwendungen entwickelt haben, werden Sie die Bedeutung dieser beiden Modifizierer kennen: Mit static werden Methoden bezeichnet, die beim Aufruf kein konkretes Objekt voraussetzen, und void beschreibt eine Methode ohne Rückgabewert. Im Moment soll diese Information genügen, denn eine genauere Kenntnis hätte derzeit keine Auswirkungen auf die ersten Schritte in die Welt der C#-Programme.

Ein Konsolenprogramm wird gestartet, indem man den Namen der Anwendungsdatei an der Konsole eingibt. Manchmal ist es notwendig, dem Programm beim Start Anfangswerte mitzuteilen, die vom laufenden Programm zur Ausführung und Weiterverarbeitung benötigt werden. Angenommen, Sie wollen einer Konsolenanwendung mit dem Dateinamen MyApplication.exe die drei Zahlen 10, 14 und 17 übergeben, sähe der Aufruf an der Eingabeaufforderung wie folgt aus:

MyApplication.exe 10 14 17

Diese drei Zahlen werden vom Parameter args, der hinter dem Bezeichner Main in runden Klammern angegeben ist, in Empfang genommen:

Main(string[] args) { [...] }

Wie die übergebenen Daten im Programmcode verarbeitet werden können, folgt später. Die Angabe der Parameterliste ist optional. Benötigt ein Programm bei seinem Aufruf keine Daten, kann die Parameterliste leer bleiben. Die Angabe der runden Klammern ist aber unbedingt erforderlich:

static void Main() { [...] }


Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Visual C# 2012

Visual C# 2012
Jetzt Buch bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Rheinwerk-Shop: Windows Presentation Foundation






 Windows Presentation
 Foundation


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: C++ Handbuch






 C++ Handbuch


Zum Rheinwerk-Shop: C/C++






 C/C++


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2013
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern