Aufgrund technischer Einschränkungen konnte die gewünschte Typografie des Titels nicht korrekt wiedergegeben werden.
VS # | ||
Datum der ersten Version | 2001 | |
---|---|---|
Paradigma | Strukturiert , imperativ , objektorientiert | |
Autor | Microsoft | |
Letzte Version | 9,0 (4. September 2020) | |
Entwicklungsversion | 8.0 | |
Tippen | Statisch , stark , nominativ | |
Dialekte | 1,0, 1,1, 1,2, 2,0 (ECMA), 3,0, 3,5, 4,0, 5,0, 6,0, 7,0, 7,1, 7,2, 7,3, 8,0, 9,0 | |
Beeinflusst von | C ++ , Java | |
Beeinflusst | Swift , Vala , F # , Kotlin , TypeScript | |
Implementierungen | Microsoft .NET , Mono , DotGNU | |
Betriebssystem | Plattformübergreifend | |
Webseite | docs.microsoft.com/en-us/dotnet/csharp und docs.microsoft.com/de-de/dotnet/csharp | |
Dateierweiterung | .cs | |
C # ( C sharp [ s i ː . & Sgr; ɑ ː p ] in britischem Englisch ) ist eine Sprache der objektorientierten Programmierung , durch vermarktet Microsoft seit 2002 und auf der Plattform erweitern entwickelt Microsoft .NET .
Es ist von C ++ abgeleitet und sehr nah an Java, von dem es die allgemeine Syntax sowie die Konzepte aufgreift und Begriffe wie Operatorüberladung , Indexer und Delegaten hinzufügt . Es wird insbesondere zum Entwickeln von Webanwendungen auf der ASP.NET- Plattform verwendet .
C # ist eine objektorientierte , stark typisierte Programmiersprache , die von C und C ++ abgeleitet ist , der Sprache wie Java . Es wird verwendet , um die Entwicklung von Webanwendungen , sowie Desktop - Anwendungen , Web - Service , Befehlen, Widgets, oder Klassenbibliotheken . In C # ist eine Anwendung ein Bündel von Klassen, in denen eine der Klassen eine Main- Methode hat , wie dies in Java der Fall ist.
C # soll auf der .NET- Plattform entwickelt werden , einem Technologie-Stack, der von Microsoft für die Nachfolge von COM erstellt wurde .
Ausführbare Dateien in C # sind in Assemblys, Namespaces, Klassen und Klassenmitglieder unterteilt. Eine Assembly ist das kompilierte Formular, das ein Programm (eine ausführbare Datei) oder eine Klassenbibliothek (eine DLL) sein kann. Eine Assembly enthält den ausführbaren Code in MSIL sowie die Symbole. MSIL- Code wird zur Laufzeit von der Just-in-Time-Funktion der .NET-Plattform in die Maschinensprache übersetzt .
C # ist für die Entwicklung auf der .NET-Plattform vorgesehen. Das Herzstück dieses technologischen Stacks ist das .NET-Framework , bestehend aus:
Ein weiteres Produkt der .NET-Plattform ist die Visual Studio .NET- Entwicklungsumgebung , ein Tool, das normalerweise für die Programmierung in C # verwendet wird.
C # ist eine von C ++ abgeleitete Sprache , die sichere Typisierung sowie die Möglichkeiten der Kapselung , Vererbung und des Polymorphismus objektorientierter Sprachen bietet . In C # sind alle Typen Objekte . Die Sprache verfügt über einen Garbage Collector und ein Ausnahmebehandlungssystem .
Sichere Typisierung bedeutet insbesondere, dass die folgenden Operationen abgelehnt werden: Verwendung einer nicht initialisierten Variablen, Versuch, über die Grenzen eines Arrays hinaus zuzugreifen, Typkonvertierungen, deren Ergebnisse nicht vorhersehbar sind, Überschreitung der Grenzen während der Operationsarithmetik.
Viele der Möglichkeiten von Java sind in C # zu finden, und es besteht eine starke Ähnlichkeit zwischen in C # geschriebenem Code und äquivalentem Code in Java.
In C # können Variablen einen Referenztyp oder einen Werttyp haben . Werttypen sind primitive Typen, Aufzählungen, Strukturen und nullfähige Typen. Referenztypen sind Klassen, Schnittstellen, Arrays und Delegaten .
Primitive TypenDie primitiven Typen sind sbyte, short, int, long, byte, ushort, uint, ulong, char, float, double, decimal und bool.
KlasseDie grundlegendsten Konstrukte der C # -Sprache sind Klassen . Diese können Konstanten, Felder, Eigenschaften, Indexer, Methoden, Ereignisse, Operatoren, Konstruktoren, Destruktoren oder Unterklassen enthalten. Die Elementarklassen sind Zeichenfolge und Objekt.
structStrukturen ähneln Klassen, sind jedoch Werttypen und können nicht vererbt werden .
delegierenEin Delegat ist eine Referenz auf eine Methode mit bestimmten Parametern. Delegaten werden verwendet, um Variablen Methoden zuzuweisen und diese als Parameter zu übergeben.
AufzählungEin Aufzählungstyp ist ein Werttyp mit einer Reihe von Konstanten. Jeder Aufzählungstyp hat einen zugrunde liegenden Typ: einen primitiven Typ, der anhand der Werte der Konstanten bestimmt wird.
nullbarer TypNullables sind primitive Typen, die zusätzlich null sein können . Jedem primitiven Typ T ist ein nullbarer Typ T & sub2; zugeordnet. Zum Beispiel eine Variable vom Typ int? kann ein int oder null enthalten.
Die Schlüsselwörter in C # 1.0 sind:
abstract class event if new readonly as const explicit implicit null ref base continue extern in object return bool decimal false int operator sbyte break default finally interface out sealed byte delegate fixed internal override short case do float is params sizeof catch double for lock private stackalloc char else foreach long protected static checked enum goto namespace public string struct throw typeof unchecked using volatile switch true uint unsafe virtual while this try ulong ushort voidZwischen C # 2.0 und 6.0 hinzugefügte Schlüsselwörter:
add dynamic join select alias equals let set ascending from nameof value async get on var await global orderby where by group partial when descending into remove yieldDie Sprache hat eine Reihe von Änderungen gegenüber C / C ++; Die folgenden Punkte werden besonders beachtet:
Obwohl C # Java ähnlich ist, gibt es einige bemerkenswerte Unterschiede, zum Beispiel:
Im September 2002 wurden die .NET-Plattform und C # der Öffentlichkeit vorgestellt. C # wird zur De-facto-Sprache dieser Plattform und wurde auch zur Implementierung eines Teils der .NET-Plattform verwendet.
VersionenJahr | Ausführung | Bibliothek | Hauptänderung |
---|---|---|---|
2002 | 1.0 | .NET Framework 1.0 und 1.1 | |
2005 | 2.0 | .NET Framework 2.0 | Generizität zu C # und Framework hinzugefügt |
2008 | 3.0 | .NET Framework 3.5 | LINQ (Sprachintegrierte Abfragen) |
2010 | 4.0 | .NET Framework 4.0 | dynamische Typen |
2012 | 5.0 | .NET Framework 4.5 | asynchrone Methoden |
2015 | 6.0 | .NET Framework 4.6 | Version für Linux |
2016 | 7.0 | .NET Framework> = 4.5 | Tupel, lokale Funktionen |
2019 | 8.0 | .NET Standard> = 2.1 und .NET Core> = 3.0 | ReadOnly-Mitglied, Merge Assignment Operator |
Microsoft der Öffentlichkeit zugänglich gemacht inOktober 2005Nach einer langen Beta-Testphase Version 2.0 der .NET-Bibliothek, begleitet von einer neuen Version fast aller zugehörigen Tools. C # ist keine Ausnahme von der Regel und wird daher in Version 2.0 mit den folgenden Ergänzungen veröffentlicht:
Als Referenz finden Sie die vollständigen Spezifikationen der neuen Funktionen, die in Version 2.0 eingeführt wurden, unter den externen Links .
Anders Hejlsberg , Delphis Vater, sprach in diesem Interview (in) über die Implementierung von Generika in C #, Java und C ++ .
Die Funktionalität von nullbaren Typen wurde nur wenige Wochen vor der Veröffentlichung von Version 2.0 korrigiert, da sich herausstellte, dass diese Variable, wenn der Wert der Variablen tatsächlich Null war, im herkömmlichen Sinne des Begriffs nicht null war, d. H. Es ist keine leere Referenz. Das Konvertieren eines primitiven Nullwerttyps in ein Objekt führte also zu einer Referenz ungleich Null auf einen Nullwert. Um dieses Problem zu beheben, musste daher der CLR-Kernel korrigiert und zahlreiche Überprüfungen und Korrekturen für alle Produkte der .NET 2.0-Reihe (Visual Studio 2005, SQL Server 2005, C # und VB.NET) durchgeführt werden.
C # 3.0 wurde auf der PDC 2005 vorgestellt. Die endgültige Version ist seitdem verfügbar 19. November 2007zum Herunterladen von der Microsoft-Site (en) . Die wichtigsten neuen Funktionen sind:
Eine Übersicht über C # 3.0 und LINQ finden Sie auf der Seite .NET Framework Development Center .
In C # 3.0 kompilierter Code ist vollständig kompatibel mit dem in 2.0, da die vorgenommenen Verbesserungen rein syntaktisch sind oder aus Verknüpfungen bestehen, die zur Kompilierungszeit kompensiert werden. Neue Funktionen, die in Bibliotheken der Version 3.5 (LINQ usw.) eingeführt wurden, können jedoch nicht mit früheren Versionen von C # verwendet werden.
Diese Version erfordert Windows XP oder höher ( Vista oder Windows 7 ). Es ist nicht für Windows 2000 verfügbar .
Die Sprache der Version 4 bietet mehrere neue Funktionen:
Das .NET 4.0- Framework wurde am veröffentlicht12. April 2010, begleitet von Visual Studio 2010. Es bietet unter anderem:
Die Sprache der Version 5 , mit der asynchrone Programme einfach durch Hinzufügen von Schlüsselwörtern asyncund programmiert werden await.
Das Verhalten von Schließungen in der Schleife foreachwurde geändert. Es ist nicht mehr notwendig , eine lokale Variable in einer Schleife einführen foreachzu vermeiden Schließung Probleme .
Beachten Sie auch die Informationen zum Aufrufer, die es ermöglichen, den Namen der Methode zu kennen, die eine Eigenschaft aufgerufen hat.
Die sechste Version von C # nimmt mehrere Änderungen vor, darunter:
Automatisch implementierte Eigenschaften (oder automatische Eigenschaften) wurden erstmals in C # 3 angezeigt, um die Deklaration von Eigenschaften zu vereinfachen, die den Zugriff auf Felder einfach kapseln. Obwohl sie den Code präziser gestalten, haben sie einen Nachteil: Es ist nicht möglich, sie auf Deklarationsebene zu initialisieren, dies muss notwendigerweise im Konstruktor erfolgen. Außerdem ist es nicht möglich, automatische Eigenschaften schreibgeschützt zu machen, da sie keinen Mutator (Setter) haben und wir ihnen daher keinen Wert zuweisen konnten.
C # 6 behebt dieses Problem, indem automatische Eigenschaften auf Deklarationsebene initialisiert werden.
C # wurde von ECMA (ECMA-334) in standardisiertDezember 2001und von ISO / IEC ( ISO / IEC 23270 ) im Jahr 2003 .
Die Änderungen in Version 2.0 wurden von ECMA (ECMA-334) in standardisiertJuni 2006und von ISO / IEC ( ISO / IEC 23270: 2006 ) inSeptember 2006.
Microsoft hat den Quellcode einiger von C # in verwendeten Bibliotheken geöffnet Oktober 2007unter der Microsoft Reference Source License (MS-RSL).
Die Norm ECMA 334 und ISO 23270 definieren den Namen der Sprache als Unicode- Zeichen 0043 (Großbuchstabe C), gefolgt vom Zeichen 0023 (#). Es wird "Cis" und nicht "C-Hash" ausgesprochen, wobei "scharf" tatsächlich das Musiksymbol ♯ bezeichnet, aber # für den einfachen Zugriff von einer Computertastatur erforderlich ist, die stattdessen das Kreuz ("Hash") bietet.
Der Name "C #" ist von der Notenschrift inspiriert, wobei ein scharfer Punkt anzeigt, dass die geschriebene Note um einen Halbton erhöht werden sollte. Dies ähnelt dem Namen der C ++ - Sprache, wobei "++" angibt, dass eine Variable nach der Auswertung um 1 erhöht werden soll. Das # -Symbol sieht auch aus wie eine Ligatur aus vier "+" - Symbolen (in einem Zwei-mal-Zwei-Raster), was impliziert, dass die Sprache ein Inkrement von C ++ ist.