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: C sharp) 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
Datentypen
Schlüsselworte
Namensräume und Sichtbarkeit
Assemblies
Shared Libraries (DLLs)
[TODO: Freiwillige vor]
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#:
- C#-Builder von Borland
- Open Source-IDE SharpDevelop ( http://www.icsharpcode.net/OpenSource/SD/Default.aspx ).