Definition „C-Sharp“

Was ist C#?

| Autor / Redakteur: Pyrocco / Stephan Augsten

Als .NET-orientierte Programmiersprache ist C# ist eng mit Microsoft-Lösungen integriert, beispielsweise Visual Studio Code.
Als .NET-orientierte Programmiersprache ist C# ist eng mit Microsoft-Lösungen integriert, beispielsweise Visual Studio Code. (Bild: Microsoft)

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.

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.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Aktuelle Beiträge zu diesem Thema

Was ist Xamarin?

Definition „Xamarin Framework“

Was ist Xamarin?

Xamarin ist für Entwickler gedacht, die die Arbeit mit C# und .NET gewohnt sind. Mit dem Framework lassen sich native Apps für mobile Plattformen entwickeln, ohne auf eine neue Programmiersprache umzusteigen. lesen

„Wir sind im Bereich langweiliger Lösungen zu Hause“

Interview mit GitLab-CEO Sid Sijbrandij

„Wir sind im Bereich langweiliger Lösungen zu Hause“

GitLab rühmt sich, die einzige Toolbox zu haben, die den gesamten DevOps-Lifecyle abdeckt. Am Rande der Anwenderkonferenz „GitLab Commit“ sprach Dev-Insider mit dem CEO des Unternehmens, Sid Sijbrandij. lesen

Welcher App-Typ für welches Szenario?

Wege zur App – Abkürzungen erwünscht

Welcher App-Typ für welches Szenario?

Apps für Android und iOS lassen sich auf verschiedenen Wegen erstellen. Eine Systematisierung ist hilfreich, um sich im technischen Dschungel zurecht zu finden. Bei der Time-To-Market können plattformübergreifende Techniken punkten. lesen

Läuft Go bald Java den Rang ab?

Golang für Cloud-native Entwicklung

Läuft Go bald Java den Rang ab?

Verteilte Anwendungsarchitekturen überfordern traditionelle Programmiersprachen. Entwickler von Microservices suchen händeringend nach besseren Alternativen. Kann Go die Platzhirsche ablösen? lesen

BIAS für komplexere Zusammenhänge nutzen

Machine Learning mit Python, Teil 4

BIAS für komplexere Zusammenhänge nutzen

Nachdem wir uns die Modellierung eines einfachen linearen Zusammenhangs anhand der Python-Bibliothek sklearn angesehen haben, wenden wir uns jetzt komplexeren Zusammenhängen zu und schauen uns an, was man unter einem BIAS versteht. lesen

Details zu Microsoft .NET Core 3.0

Neuer C#-Compiler, besserer Garbage Collector und mehr

Details zu Microsoft .NET Core 3.0

Microsoft hat einige Produkt-Updates für Entwickler bereitgestellt: .NET Core 3.0 ist als finales Release erhältlich. Compiler-seitig werden die neuen Versionen der Programmiersprachen C# 8.0 sowie F# 4.7 unterstützt. lesen

Was ist ein Programmierparadigma?

Definition „Programmierparadigmen“

Was ist ein Programmierparadigma?

Programmierparadigmen sind verschiedene grundlegende Ansätze und Techniken für die Programmierung von Software. Darunter fallen z. B. auch objektorientierte oder funktionale Programmierung. lesen

Microsoft zeigt .NET Core 3.0 bei .NET Conf

Weltweite Live-Sessions für Entwickler geplant

Microsoft zeigt .NET Core 3.0 bei .NET Conf

Kommende Woche können Entwickler an der kostenlosen Online-Konferenz .NET Conf 2019 von Microsoft teilnehmen. Als Highlight wird .NET Core 3.0, also die nächste Major-Version der Software-Plattform vorgestellt. lesen

Was ist dpkg?

Definition „Debian Package Manager“

Was ist dpkg?

Seit 1994 macht der Debian Package Manager dpkg die Installation von Softwarepaketen unter GNU/Linux-Installation smart. Metadaten im Softwarepaket und eine Datenbank im System ermöglichen dem Tool, Abhängigkeiten und Konflikte bei der Installation zu erkennen sowie eine saubere Deinstallation durchzuführen. lesen

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 46022456 / Definitionen)