C-Sharp

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen

C# (Aussprache: ßiescharp) ist eine Programmiersprache, die vom Softwarehersteller Microsoft im Rahmen seiner .NET-Strategie entwickelt und später als ein Standard von der ECMA und ISO akzeptiert wurde.

Konzept

Neben Konzepten der Programmiersprache Java greift C# auch Konzepte aus C++ sowie der Microsoft-eigenen Sprache Visual Basic auf.

C# zählt zu den objektorientierten Programmiersprachen und unterstützt die Entwicklung sogenannter sprachunabhängiger .NET-Komponenten und auch von COM-Komponenten für den Gebrauch mit Win32-Applikationen.

Einige der Elemente von C++, die im Allgemeinen als unsicher gelten, wie beispielsweise Zeiger, werden in C# nur für so genannten unsicheren Code erlaubt, der in Zonen mit eingeschränkten Rechten (z.B. bei Programmen, die aus Webseiten heraus ausgeführt werden) ohne die Zuteilung erweiterter Rechte nicht ausgeführt wird.

Als .NET-Sprache verfügt auch C# über Sprachunterstützung für Attribute und Delegaten. Attribute erlauben es, Informationen über eine Klasse, ein Objekt, oder eine Methode zu speichern, die zur Laufzeit ausgewertet werden können. Man spricht hierbei auch von Metadaten. Ein Delegat kann auf Methoden einer Klasse verweisen. Das Konzept lässt sich mit Funktionszeigern vergleichen. Im Unterschied zu Funktionszeigern enthalten Delegaten zusätzlich auch Verweise auf die zu den Methoden gehörenden Objekte. Ein Aufruf eines Delegaten ruft also Methoden auf, denen implizit ein Objektzeiger als Parameter mitübergeben wird. Des Weiteren müssen Delegaten typensicher deklariert werden, was zur Folge hat, dass Inkompatibilitäten der Methodensignaturen zwischen aufrufendem Delegat und der aufzurufenden Methode schon während der Kompilation aufgelöst werden.

Ab der Version 2.0 von C#, das mit .NET-Framework 2.0 freigegeben wurde, unterstützt C# neben Generics (generischen Typen) auch anonyme Methoden, Iteratoren und partiale Klassen. Interessanterweise sind Generics, Iteratoren und partielle Klassen Bestandteil des .NET-Frameworks 2.0 und stehen somit auch anderen .NET-Programmiersprachen, wie z.B. VB.NET, zu Verfügung. Im Gegensatz dazu sind anonyme Methoden jedoch ein Bestandteil von C# und stehen ausschließlich in dieser Sprache zur Verfügung. Auch statische Klassen und eingeschränkter Zugriff die set- und get-Zugriffsmodifizierer von Eigenschaften (Properties) gibt es nur in C# 2.0. Gleiches gilt für Covarianz bzw. von Contravarianz bei Delegates.

Mit Reflektion, anonymen Methoden, Custom Attributes und Generics kann mittels C# 2.0 sehr effektiver Code erstellt werden.

Syntaxbeispiel: http://wiki.byte-welt.net/wiki/Eine_einfache_Hello_World_-_Anwendung

Standardisierung

Microsoft reichte im August 2000 zusammen mit Hewlett-Packard und der Intel Corporation C# bei der Europäischen Standardisierungsorganisation European Computer Manufacturers Association ECMA zur Standardisierung ein. Im Dezember 2001 veröffentlichte die ECMA den Standard ECMA-334 C# Language Specification. 2003 wurde C# von der ISO standardisiert (ISO/IEC 23270).

Im Juni 2005 genehmigte die ECMA die dritte Version (C# 2.0) der C#-Spezifikationen und aktualisierte den bisherigen Standard ECMA-334. Hinzu kamen die partiellen Klassen, anonyme Methoden, nullable types und Generics, die Ähnlichkeiten zu den C++-Templates aufweisen. Im Juli 2005 übergab die ECMA die Standards und zugehörigen TRs an die ISO/IEC JTC 1.

Die ECMA Spezifikation 334 deckt nur die Sprache C# ab. Programme, die in C# geschrieben werden, nutzen gewöhnlich das .NET-Framework, welches teilweise durch andere Spezifikationen beschrieben wird und teilweise proprietär ist. Dennoch ist die Sprache C# prinzipiell plattformunabhängig. Das von Ximian (jetzt Novell) initiierte Projekt Mono ermöglicht beispielsweise auch Linuxnutzern, C# für Entwicklungen auf ihrem Betriebssystem einzusetzen.

Microsoft veröffentlichte die dritte Version von C# mit dem .NET-SDK 2.0 und Visual Studio 2005 im November 2005.

Microsoft stellte klar, dass C#, genauso wie andere .NET-Sprachen ein wichtiger Bestandteil ihrer Softwarestrategie sowohl für den internen als auch für den externen Gebrauch darstellen. Das Unternehmen übernimmt eine aktive Rolle in der Vermarktung der Sprache als Teil ihrer gesamten Geschäftsstrategie.

Verfügbarkeit von integrierten Entwicklungsumgebungen

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

Marktsituation

Es ist davon auszugehen, dass .NET in allen kommenden Windows-Versionen einen festen Bestandteil von Windows bilden wird. Jedoch ist .NET 1.1 mit Windows XP Service Pack 2, mit der Version 2.0 auf Windows 2003 und mit der Version 3.0 auf Vista Bestandteil der Installation. Für alle anderen Windows-Versionen muss das .NET-Framework separat installiert werden.

Dieser Umstand könnte Microsoft dabei helfen, Java wichtige Marktanteile streitig zu machen. Zudem stellt C# in Verbindung mit .NET eine sehr leistungsstarke Umgebung für Entwickler bereit, und Microsoft setzt enorme Ressourcen für die Entwicklung von .NET ein.

Es gibt auch von Microsoft unabhängige Projekte für die Portierung von .NET auf Unix-Systeme, wie z.B. Mono, eine .NET-kompatible Entwicklungs- und Laufzeitumgebung.

Kritik

Einige Sicherheitsexperten bezweifeln die Wirksamkeit der CLR-Sicherheitsmechanismen und kritisieren deren Komplexität. Der Vorwurf, C# sei an Java angelehnt, wird von Microsoft bestritten, dennoch lassen sich Gemeinsamkeiten zwischen beiden Sprachen finden.

Der Name C#

C# ist ursprünglich ein Symbol für den in der Musik durch ein Kreuz um einen Halbton erhöhten Ton C, das Cis – englisch C sharp (Aussprache: ˌsiːˈʃɑɹp). Auch kann der Name als symbolische Anlehnung an die verwandte Sprache C++, sowie als Wortspiel auf see sharp (scharf sehen) aufgefasst werden.

Dieser Beitrag stammt in seiner ersten oder einer späteren Version der deutschsprachigen Wikipedia. Er ist dort unter C-Sharp zu finden, die Liste der bisherigen Autoren befindet sich in der Versionsliste.