Zum Inhalt springen

Sprachelemente von C-Sharp

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 5. September 2003 um 12:57 Uhr durch 82.82.100.197 (Diskussion). Sie kann sich erheblich von der aktuellen Version unterscheiden.


Hintergrund

C# ist eine objektorientierte Programmiersprache, die vom Softwarehersteller Microsoft im Rahmen seiner .NET-Initiative eingeführt wurde. Die Syntax von C# ist an die ebenfalls objektorientierte Programmiersprache Java angelehnt. Bei der Entwicklung von C# war Anders Hejlsberg maßgeblich beteiligt, der schon für den Softwarehersteller Borland die Programmiersprache Delphi entwickelte, die auf Pascal basiert.

Der Name der Sprache kommt aus der Musik. C# (gesprochen see sharp; engl. für genau erkennen) ist in der Musik die Bezeichnung für den durch ein Kreuz um einen Halbton erhöhten Ton c, das cis. Daher sprechen einige Entwickler anstatt von "C sharp" auch von "cis".

Konzept

Neben Konzepten der Programmiersprache Java, greift C# auch Konzepte aus C++ sowie der Microsoft-eigenen propietären Sprache VisualBasic auf. Beide Programmiersprachen sind ebenfalls, neben weiteren, als eigenständige Portierungen im .NET Framework verfügbar und nutzbar.

Als eine (favorisierte) Sprache der .NET Plattform, wird C# mittels einer virtuellen Laufzeitumgebung (runtime environment) in Form einer virtuellen Maschine (VM) ausgeführt. Durch die Verwendung dieser virtuellen Maschine ist es möglich, ein Programm unabhängig von der Plattform (Betriebssystem, Prozessorarchitektur) auszuführen. Ein Programm, das beispielsweise unter dem Betriebssystem Windows auf einer Intel-Architektur entwickelt wurde, kann somit auch auf einem MacOS X-System auf einer PowerPC (PPC)-Architektur ausgeführt werden. Diese Plattformunabhängigkeit ist bisher aber kaum gegeben, da der Hersteller Microsoft die .NET Plattform nur für seine eigene Produktlinie Windows anbietet. Eine Laufzeitumgebung für das Betriebssystem Linux (und Derivate) steht aber in Form des Mono-Projekts in Aussicht, das vom Hersteller Ximian begonnen wurde. Nur lizenzrechtliche Probleme könnten zum Scheitern dieser Portierung führen.

Was C# von Java und C++ abhebt, ist die Tatsache, dass sowohl Klassen als auch Datentypen, wie in Smalltalk, durch Objekte repräsentiert werden. Ein weiterer Unterschied ist, dass in C# mit Attributen gearbeitet werden kann. Attribute erlauben es, einem Objekt Funktionalität hinzuzufügen, ohne seine Schnittstelle zu verändern. Man spricht hierbei auch von Metadaten.

Einige der Elemente von C++, die im allgemeinen als unsicher gelten, wie beispielsweise Zeiger-Arithmetik, wurden in C# nur für so genannten "unsafe code" (unmanaged code) erlaubt. Dieser benötigt eine veränderte Sicherheitseinstellung, um auf einem Zielsystem ausgeführt zu werden, und einen zusätzlichen Compiler-Schalter, um ihn zu übersetzen. Somit wird vermieden, dass sich versehentlich unsicherer Code in eine Anwendung einschleicht.

Sprachelemente

Zu Beginn der Klassiker aller Programme in C#:

using System;

class HalloWelt
{
    static void Main()
    {
        Console.WriteLine("Hallo Welt");
    }
}

Notationsregeln

Schlüsselworte

if, else (Bedingte Ausführung)
for, while, do (Schleifen)
continue, break, goto
return, throw (Sprünge)
switch, case (Aufzählung)

Klassen und Objekte

Die Klasse Object
Konstruktor
Destruktor
Das Schlüsselwort static
Das Schlüsselwort new
Das Schlüsselwort this

Strukturen

Flags

Datentypen, Eigenschaften und Konstanten

Datentypen und Speicherbedarf
DatentypBitVorz.
bool1-
byte8J
char16-
decimal128-
double64-
float32-
int32J
long64J
sbyte8J
short16J
uint32N
ulong64N
ushort16N

Datentypen sind in C# nicht elementar, sondern sind auch objektbasiert. Jeder der oben aufgeführten Datentypen stellt einen Alias auf eine Klasse des Namespaces System dar. Beispielsweise wird dabei der Datentyp bool durch die Klasse System.Boolean abgebildet. Man spricht auch von Wrapper-Klasse. Zu beachten ist auch, dass es für verschiedene Rechnerarchitekturen auch unterschiedliche Wertigkeiten beim Speicherbedarf gibt. Für den Datentyp int gibt es unter anderem die Wrapper-Klassen int16, int32 und int64 im genannten Namespace. Vergleichbar mit C/C++ und anders als bei Java gibt es unter C# außerdem vorzeichenbehaftete und vorzeichenlose Datentypen. Diese werden durch voranstellen des Buchstaben s (für signed) bei vorzeichenbehafteten Datentypen und durch voranstellen des Buchstaben u (für unsigned) bei vorzeichenlosen Datentypen symbolisiert. Die Fließ- bzw- Gleitkomma-Datentypen (float, double, decimal) können neben einfacher auch doppelte Genauigkeit aufweisen und dadurch einen varierenden Speicherbedarf aufweisen. Dadurch ändert sich die Genauigkeit, was durch die Anzahl der Nachkommastellen zum Ausdruck kommt.

Das Schlüsselwort const
Get- und Set-Operator (Eigenschaften)
Die Klasse string

Methoden

Parameter
Die Schlüsselworte in, out, ref
Parameterlisten
Rückgabewert

Indexer und Arrays (Felder)

Ereignisse und Delegate

Operatoren

Sichtbarkeit

Namensräume (Namespaces)

Vererbung

Abstrakte Klassen
Interfaces
Das Schlüsselwort override
Das Schlüsselwort base
Das Schlüsselwort sealed
Casting (Konvertierung)
Überladen vs Überschreiben
Mehrfachvererbung

Exception-Handling (Ausnahmen)

Assemblies

Attribute (Metadaten)

Shared Libraries (DLLs)

Kommentare und Dokumentation

[TODO: Freiwillige vor]

Verfügbare Klassenbibliotheken

  • Collection
  • Threads
  • Reflection
  • CodeDOM
  • ADO.NET
  • ASP.NET
  • Windows.Forms
  • ...

Verfügbarkeit (IDEs)

Neben der von Microsoft favorisierten Entwicklungsplattform VisualStudio.NET aus dem eigenen Hause, gibt es inzwischen auch Entwicklungsumgebungen (IDEs) anderer Hersteller für C#: