Definition „C-Sharp“ Was ist C#?
C# ist eine moderne, objektorientierte und typsichere Programmiersprache. Sie integriert sich in .NET-Plattformen, die Cross-Development für Anwendungen für Windows, macOS, iOS, Android und Linux ermöglichen.
Anbieter zum Thema

C# wurde Anfang der 2000er Jahre als systemeigene Programmiersprache für Microsofts .NET-Plattformen entwickelt. Die .NET-Plattformen bieten Programmiersprachen, Werkzeuge und Technologien zur Entwicklung und Ausführung von Softwareanwendungen.
Microsoft definiert mit der Common Language Specification (CLS) einen Sprachumfang, den alle .NET-Programmiersprachen erfüllen müssen. C# erfüllt die CLS. In der Spezifikation wird eine Mindestmenge von Typen und Klassenbibliotheken aufgeführt, deren Verfügbarkeit der Compiler erwartet.
CLS-konformer Programmiercode verschiedener Sprachen lässt sich dabei mischen. Entwickler können einen Teil einer Anwendung in C# und einen anderen Teil in einer anderen .NET-Sprache (z.B. Visual Basic .NET) schreiben. Die Entwicklungsumgebung, die Bibliotheken und das objektorientierte Entwicklungsmodell werden dabei beibehalten.
Entwicklungsumgebung Visual Studio
Mit Visual Studio stellt Microsoft eine integrierte Entwicklungsumgebung (IDE) zur Verfügung, mit der .NET-Anwendungen in CLS-Sprachen entwickelt werden können. Visual Studio unterstützt Entwicklung von Desktop-, mobilen und Webanwendungen in Visual Basic, C, C++, C#, Python, JavaScript u.a.
.NET Framework
.NET-Anwendungen gründen auf den Programmierschnittstellen des .NET Frameworks. Dieses Framework stellt die Klassenbibliotheken, den Compiler und die Laufzeitumgebung zur Ausführung von .NET-Anwendungen zur Verfügung.
Der geschriebene Quellcode wird in einen Zwischencode, die Common Intermediate Language (CIL), übersetzt. Jedes Betriebssystem mit .NET-Unterstützung hat seine eigene .NET-Laufzeitumgebung namens Common Language Runtime (CLR). Die CLR verwaltet den Speicher, verarbeitet Objektreferenzen und führt die Just-In-Time-Kompilierung (JIT) des CIL-Codes durch.
Die CLR ist damit eine virtuelle Maschine, d.h. ein System, das Programme auf einem Betriebssystem zum Laufen bringt, die nicht nativ auf diesem laufen würden. Die CLR sorgt dafür, dass ein und derselbe Code auf unterschiedlichen Betriebssystemen ausgeführt werden kann.
Durch die CLR ist die Ausführung von C#-Programmen auch sicherer als von Programmen, die den Speicher selbst verwalten müssen. Daher wird auf .NET-Basis entwickelter Code als verwalteter („managed“) Code bezeichnet.
Spracheigenschaften
C# ist eine universelle, objektorientierte Programmiersprache, die ursprünglich entwickelt wurde, um die Entwicklung von Windows-Anwendungen zu vereinfachen. Die Ähnlichkeiten zwischen C# und der C-Sprachfamilie sowie Java sollen Entwicklern mit einem Hintergrund in objektorientierten Sprachen den Einstieg erleichtern. Zudem wurden moderne Eigenschaften der Sprache Java eingebracht, wie Portabilität und automatische Speicherverwaltung (Garbage Collection).
Durch das .NET Framework verfügt C# ähnlich wie Java über eine umfangreiche Klassenbibliothek, die beispielsweise Verschlüsselung, TCP/IP-Socket-Programmierung und die Erstellung grafischer Oberflächen unterstützt. Ausnahmebehandlung (Exception Handling), verschiedene Arten von Polymorphismus und die Trennung von Schnittstellen und Implementierung sind weitere Eigenschaften von C#.
Polymorphismus
Im Gegensatz zu C++ unterstützt C# keine Mehrfachvererbung. Eine Klasse kann aber beliebig viele Schnittstellen implementieren. Auch dies reduziert Fehlerquellen und vereinfacht die architektonischen Anforderungen an das .NET Framework.
Zeiger
C# rät auch von der expliziten Verwendung von Zeigern ab. Die Sprache nimmt hierbei eine Zwischenstellung zwischen C++ und Java ein, das keine Zeiger vorsieht. Deren Nutzung kann bei Programmierfehlern leicht den Systemspeicher korrumpieren und zu Abstürzen führen.
In C# können Zeiger nur in Blöcken verwendet werden, die explizit als unsicher gekennzeichnet sind. Programme mit unsicherem Code benötigen zum Ausführen entsprechende Berechtigungen. Objektzugriff erfolgt meistens über sichere Objektreferenzen, die entweder immer auf ein „lebendes“ Objekt verweisen oder den genau definierten Nullwert haben. Es ist unmöglich, einen Verweis auf ein nicht existentes Objekt oder auf einen zufälligen Speicherblock zu erhalten.
C# ist eine Sprache mit strenger Typisierung, um Fehler durch Typkonvertierung zu vermeiden. Array-Grenzen werden automatisch geprüft. Variablen müssen initialisiert werden. Durch automatische sog. Garbage Collection, die nicht mehr genutzten Speicher freigibt, wird der Programmierer von der Verantwortung für Speicherfreigabe befreit.
Cross-Development mit .NET Core und Mono
Microsofts in Aufbau befindliche .NET Core-Plattform macht .NET-Programm neben Windows auch auf MacOS und verschiedenen Linux-Distributionen nutzbar. .NET Core ist ein Open Source-Modernisierungsprojekt zentraler Komponenten des .NET Frameworks. Ziel ist vereinfachte Anwendungsentwicklung, verbesserte Modularität und größere Plattformunabhängigkeit.
Mono ermöglicht als alternative Open Source-Implementierung des .NET Frameworks die Entwicklung plattformunabhängiger Software auf Basis der Common Language-Infrastruktur und C#. Mit Mono laufen Programm, die für die .NET-Umgebung erstellt wurden, auch auf macOS, iOS, Android und Linux.
Ende 2020 sollen .NET Framework, .NET Core und Mono unter der Bezeichnung .NET 5.0 zu einer einheitlichen Plattform zusammengeführt werden.
(ID:46022456)