www.wikidata.de-de.nina.az
Der korrekte Titel dieses Artikels lautet C Diese Schreibweise ist in der Wikipedia aufgrund technischer Einschrankungen nicht moglich C englisch c sharp siːˈʃɑːp ist eine typsichere objektorientierte Allzweck Programmiersprache Architekt der Sprache war Anders Hejlsberg im Auftrag von Microsoft zurzeit ist Mads Torgersen der Chef Entwickler Die Sprache ist an sich plattformunabhangig wurde aber im Rahmen der NET Strategie entwickelt ist auf diese optimiert und meist in deren Kontext zu finden C Objektorientierte ProgrammierspracheBasisdatenParadigmen multiparadigmatisch strukturiert imperativ deklarativ objektorientiert ereignisorientiert funktional generisch reflexiv parallelErscheinungsjahr 2001Designer Anders HejlsbergEntwickler MicrosoftAktuelle Version 11 0 1 8 November 2022 Typisierung statisch stark explizit optional dynamisch duck implizit Wichtige Implementierungen Visual C MonoStandardisierungen ECMA 334Beeinflusst von C C Java Delphi Modula 3 Cw Eiffel F Haskell ICON J Visual J Object Pascal Rust Meta Language Visual BasicBeeinflusste Java 2 Vala Cw Swift VB NETBetriebssystem alle fur die eine CLI Implementierung existiert z B Microsofts Net Framework oder Xamarins Mono https docs microsoft com de de dotnet csharp Historisch wurde in C fast exklusiv fur Windows entwickelt Durch Xamarin ist es inzwischen aber auch moglich fur macOS iOS und Android zu entwickeln Zudem gibt es mit NET Core auch offizielle Unterstutzung fur GNU Linux und macOS 3 Bis Version 2 war die Sprache bei der ECMA 4 und der ISO 5 als Standard registriert In der Folge erschienen regelmassig umfangreiche Erweiterungen der Sprache durch Microsoft Durch die Entwicklung des Referenz Compilers als Open Source seit 2014 sind auch Community Beitrage moglich Inhaltsverzeichnis 1 Namensgebung 2 Konzept 3 Standardisierung 4 Versionen 5 Integrierte Entwicklungsumgebungen IDEs 6 Compiler 7 Sprachelemente 8 Sprachderivate 9 Siehe auch 10 Literatur 11 Weblinks 12 EinzelnachweiseNamensgebung BearbeitenC wurde unter dem Codenamen Cool entwickelt der jedoch aus Grunden des Marketings zur Veroffentlichung geandert wurde Der Name C Sharp leitet sich vom Zeichen Kreuz englisch sharp der Notenschrift ab 6 was dort fur eine Erhohung des Grundtons um einen Halbton steht C sharp ist also der englische Begriff fur den Ton cis Dies ist eine Anspielung darauf dass der Name der Programmiersprache C der Notation fur die Erhohung des Werts einer Variable um eins entstammt Des Weiteren kann man das Kreuz Zeichen als Kombination von vier Plus Zeichen betrachten was eine Erhohung von C darstellen soll 7 Allerdings enthalt der Name nicht das Kreuz Zeichen der Musiknotation sondern ein Doppelkreuz bzw Raute 8 das haufig als Ersatzzeichen fur das Kreuz genutzt wird weil es im Gegensatz zum Kreuz auf ublichen Tastaturen vorkommt In kunstlerischen Darstellungen wird teilweise auch das Notenschriftzeichen verwendet was in der Folge von einigen fur korrekt gehalten wird 9 Eindeutig falsch ist die zweifache Verwendung des doppelten Dagger Zeichens Konzept BearbeitenC greift Konzepte der Programmiersprachen Java C Haskell C sowie von Delphi auf C zahlt zu den objektorientierten Programmiersprachen und unterstutzt sowohl die Entwicklung von sprachunabhangigen NET Komponenten als auch COM Komponenten fur den Gebrauch mit Win32 Anwendungsprogrammen Einige der Elemente von C die im Allgemeinen als unsicher gelten wie beispielsweise Zeiger werden in C nur fur sogenannten unsicheren Code erlaubt der in Zonen mit eingeschrankten Rechten z B bei Programmen die aus Webseiten heraus ausgefuhrt werden ohne die Zuteilung erweiterter Rechte nicht ausgefuhrt wird Als NET Sprache verfugt auch C uber Sprachunterstutzung fur Attribute und Delegaten Attribute erlauben es Informationen uber eine Klasse ein Objekt oder eine Methode zu speichern die zur Laufzeit ausgewertet werden konnen Man spricht hierbei auch von Metadaten Ein Delegat kann auf Methoden einer Klasse verweisen Das Konzept stellt eine Weiterentwicklung von Funktionszeigern dar wie sie beispielsweise in der Programmiersprache C vorkommen Der Delegat hat jedoch einen festen Typ genannt Delegat Typ der eine konkrete Signatur festlegt die vom Compiler uberpruft wird Fur den Aufruf beinhaltet der Delegat auch den Verweis auf das zu den Methoden gehorende Objekt Ein Aufruf eines Delegaten ruft also gezielt eine Methode auf der implizit ein Objektzeiger als Parameter ubergeben wird Ausserdem mussen Delegaten typensicher deklariert werden was zur Folge hat dass Inkompatibilitaten der Methodensignaturen zwischen aufrufendem Delegat und der aufzurufenden Methode schon wahrend der Kompilierung bemerkt werden Ab der Version 2 0 von C die mit Net Framework 2 0 freigegeben wurde unterstutzt C neben generischen Typen englisch generics auch anonyme Methoden Generatoren und partielle Klassen Generische Typen Iteratoren und partielle Klassen sind Bestandteil des NET Frameworks 2 0 und stehen somit auch anderen NET Programmiersprachen wie beispielsweise Visual Basic NET zur Verfugung Standardisierung BearbeitenMicrosoft reichte C im August 2000 zusammen mit Hewlett Packard und Intel bei der Normungsorganisation Ecma International zur Normung ein Im Dezember 2001 veroffentlichte die ECMA die Norm ECMA 334 C Language Specification 2003 wurde C von der ISO genormt ISO IEC 23270 Im Juni 2005 genehmigte die ECMA die dritte Version C 2 0 der C Spezifikationen und aktualisierte die bisherige Norm ECMA 334 Hinzu kamen die partiellen Klassen anonyme Methoden nullable types und Generics die Ahnlichkeiten zu den C Templates aufweisen Im Juli 2005 ubergab die ECMA die Standards und zugehorigen TRs an die ISO IEC JTC 1 Die ECMA Spezifikation 334 deckt nur die Sprache C ab Programme die in C geschrieben werden nutzen gewohnlich das NET Framework das teilweise durch andere Spezifikationen beschrieben wird und teilweise proprietar ist Dennoch ist die Sprache C prinzipiell plattformunabhangig Das von Ximian jetzt Xamarin initiierte Projekt Mono ermoglicht beispielsweise auch Nutzern von macOS oder Unix C fur Entwicklungen auf ihrem Betriebssystem einzusetzen Microsoft veroffentlichte 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 einen wichtigen Bestandteil seiner Softwarestrategie sowohl fur den internen als auch fur den externen Gebrauch darstelle Das Unternehmen ubernimmt eine aktive Rolle in der Vermarktung der Sprache als Teil seiner gesamten Geschaftsstrategie Versionen BearbeitenC Versionen Jahr Version neu eingefuhrte Sprachelemente NET C 2002 NET 1 0 C 1 02003 NET 1 1 C 1 22005 NET 2 0 C 2 0 Generics Partielle Typen Anonyme Methoden Iteratoren Nullable Datentyp Private setters Delegates Kovarianz und Kontravarianz Statische Klassen2006 NET 3 02007 NET 3 5 C 3 0 Implizit typisierte Variablen Objekt und Collection Initialisierer Automatisch implementierte Properties Anonyme DatentypenErweiterungsmethodenLINQ Lambda Expressions Expression Trees Partielle Methoden2010 NET 4 0 C 4 0 Dynamisches Binding Benannte und optionale Argumente Generische Ko und Kontravarianz Embedded Interop Datentypen NoPIA 2012 NET 4 5 C 5 0 Asynchrone Methoden Caller Info Attribute2015 NET 4 6 C 6 0 Initialisierer fur Auto Properties Import statischer Funktionen in den Namespace Exception Filters Indizierte Membervariablen und Elementinitialisierer Das Keyword await in try catch finally Blocks Collection Initialisierer verwenden Add Erweiterungsmethode String Interpolation Mehrzeilige String Ausdrucke Null Conditional Operatornameof Ausdruck Implementierung von Methoden mittels Lambda Ausdruck2017 NET 4 6 2 NET Core C 7 0 C 7 3 Deklarationsausdrucke auf out Parametern Mustervergleiche Pattern matching is Ausdrucke mit Musternswitch Anweisungen mit Typ Mustern und zusatzlichen Bedingungen Tupel Dekonstruktion von Tupeln Lokal deklarierte Funktionen Fullzeichen zur Verbesserung der Lesbarkeit von Zahlen Binarliterale 0b Referenzen Verweise als Ruckgabewert von Funktionen und als lokale Variablen Verallgemeinerte async Ruckgabe TypenDie Main Methode kann async sein Lambdaausdrucke gt in Konstruktoren Accessoren get set und Finalizern Ausnahmen innerhalb von Ausdrucken erzeugen Bedingte ref Ausdrucke2019 NET Core 3 C 8 0 Standardimplementierungen in Schnittstellen Switch Expressions Index und Range Operatoren zur Adressierung von Teilmengen asynchrone Streams asynchrone Iteration mit foreach nullbare Referenztypen z B String statische Lokale Funktionen2020 NET 5 0 C 9 0 Datensatztypen Records Eigenschafteninitialisierung Anweisungen ausserhalb von Klassen Verbesserungen beim Pattern Matching Ganzzahlen mit nativer Grosse Funktionszeiger Unterdrucke die Emission der lokalen Flags Zieltypisierte new Ausdrucke statische anonyme Funktionen Zieltypisierte bedingte Ausdrucke Kovariante Ruckgabetypen Erweiterungsunterstutzung GetEnumeratorfur foreachSchleifen Lambda Verwerfungsparameter Attribute fur lokale Funktionen Modulinitialisierer Neue Funktionen fur Teilmethoden2022 NET 6 0 C 10 0 Datensatzstrukturen 10 Parameterlose Strukturkonstruktoren Globale using Anweisung Dateibereichsnamespaces Muster fur erweiterte Eigenschaften Verbesserte interpolierte Zeichenfolgen Konstante interpolierte Zeichenfolgen Lambdaverbesserungen Aufruferargumentausdruck Erweiterte line Direktiven Generische Attribute Verbesserte Analyse der definitiven Zuweisung AsyncMethodBuilder Uberschreibung2022 NET 7 0 11 C 11 0 Generische Attribute Generische Mathematik Schlusselwort fur IntPtr und UIntPtr Datentypen Zeilenumbruche bei Stringinterpolation Erweiterung bei Listenmustern Datei lokale Datentypen Benotigte Member Datenfelderref Felder in ref struct Datenstrukturen Default Werte in struct Datenstrukturen UTF 8 Codierte Strings mittels u8 Suffix Erweiterung des nameof Operators Raw String Literale Integrierte Entwicklungsumgebungen IDEs BearbeitenDie dominierende Entwicklungsplattform ist Microsoft Visual Studio Windows und macOS proprietare Software Es gibt auch eine Reihe anderer Entwicklungsumgebungen IDEs fur C es werden jedoch nicht immer die neusten Sprachstandards und Laufzeitumgebungen NET Core unterstutzt Visual Studio Code Windows macOS und Linux JetBrains bietet mit ReSharper Windows proprietar eine Reihe von Plug ins fur Visual Studio an welche dieses verbessern sollen Rider Windows Linux und Mac OS Baltie Windows proprietar speziell fur Kinder MonoDevelop GNU Linux FLOSS Notepad Windows FLOSS mit dem Plugin CS Script FLOSS ermoglicht Autovervollstandigung Codeausfuhrung und Debugging das OmniSharp Projekt ermoglicht erleichtert und erweitert die Moglichkeiten verschiedener verbreiteter Editoren Atom Adobe Brackets Emacs Sublime Text Vim und Visual Studio Code bezuglich C als Teil von NET SharpDevelop Windows FLOSS Visual Studio Windows und Mac OS Compiler BearbeitenIn der Regel ubersetzen die C Compiler nicht unmittelbar in die Maschinensprache sondern in eine Zwischensprache Siehe auch Common Intermediate Language und NET Compiler PlatformBei der Ausfuhrung wird dann eine virtuelle Maschine gestartet die den zweiten Teil des Ubersetzungsprozesses in einem Just In Time Compiler erledigt Es existieren vier Compiler fur C der von Microsoft fur die neuesten Versionen von C und Visual Basic NET entwickelte Roslyn Compiler Windows FLOSS 12 als neuste Iteration der NET Compiler Platform deren altere Versionen proprietare Software waren mcs von Xamarin fur Mono Windows macOS GNU Linux FLOSS unterstutzte bis C Version 6 alle Features die Version 7 wurde nur noch partiell unterstutzt 13 DotGNU FLOSS Weiterentwicklung wurde 2012 eingestellt CoreRT Net NativeSprachelemente Bearbeiten Hauptartikel Sprachelemente von C Sharp C Syntaxbeispiel fur ein einfaches Kommandozeilen Programm using System class Program static void Main string args Console WriteLine Hallo Welt Einfache MessageBox in C using System using System Windows Forms class Program public static void Main MessageBox Show Text Titel MessageBoxButtons OK MessageBoxIcon Hand FileStream Beispiel in C using System using System IO using System Text class Program public static void Main Text der in die Datei geschrieben wird const string textToWrite Hallo Welt const string fileName dateiname txt Datei dateiname txt wird erstellt oder uberschrieben using var stream new FileStream fileName FileMode Create FileAccess Write Der Text wird UTF8 kodiert in die Datei geschrieben var data Encoding UTF8 GetBytes textToWrite stream Write data 0 data Length Datei wird geschlossen Networking Beispiel in C using System Text using System Net using System Net Sockets using static System Console class Program public static void Main Daten die gesendet werden const string textToSend Hallo Welt Endpunkt zu dem verbunden wird const string localhost 127 0 0 1 const int port 80 var data Encoding UTF8 GetBytes textToSend var ip IPAddress Parse localhost var ipEndPoint new IPEndPoint ip port Socket das verwendet wird using var socket new Socket AddressFamily InterNetwork SocketType Stream ProtocolType Tcp Es wird zum Endpunkt verbunden socket Connect ipEndPoint Daten werden gesendet var byteCount socket Send data SocketFlags None WriteLine Es wurden 0 bytes gesendet byteCount Puffer fur die zu empfangenen Daten var buffer new byte 256 Daten werden empfangen byteCount socket Receive buffer SocketFlags None Wenn eine Antwort erhalten wurde diese ausgeben if byteCount gt 0 WriteLine Es wurden 0 Bytes empfangen byteCount var answer Encoding UTF8 GetString buffer WriteLine Empfangene Daten 0 answer Verbindung wird geschlossen Sprachderivate BearbeitenCw Sing Spec Vala fur Programme des Gnome ProjektesSiehe auch BearbeitenListe von NET Sprachen Liste von ProgrammiersprachenLiteratur BearbeitenJoseph Albahari Ben Albahari C 6 0 in a Nutshell The Definitive Reference 6 Auflage O Reilly Sebastopol 2016 ISBN 978 1 4919 2706 9 englisch 1136 S Inhaltsverzeichnis Inhaltstext PDF Joseph Albahari Ben Albahari C 8 0 Pocket Reference Instant Help for C 8 0 Programmers O Reilly Sebastopol 2019 ISBN 978 1 4920 5120 6 englisch 240 S Inhaltstext Walter Doberenz Thomas Gewinnus Visual C 2015 Grundlagen Profiwissen und Rezepte Hanser Munchen 2015 ISBN 978 3 446 44381 5 1195 S Inhaltsverzeichnis Inhaltstext Matthias Geirhos Professionell entwickeln mit C 6 und Visual Studio 2015 Das Praxisbuch 3 aktualisierte und erweiterte Auflage Rheinwerk Bonn 2016 ISBN 978 3 8362 3929 5 1209 S Inhaltsverzeichnis Inhaltstext Jay Hilyard Stephen Teilhet C 6 0 Cookbook Solutions for C Developers 4 Auflage O Reilly Sebastopol 2015 ISBN 978 1 4919 2146 3 englisch 704 S Inhaltsverzeichnis Inhaltstext PDF Andreas Kuhnel C 8 mit Visual Studio 2019 das umfassende Handbuch 8 aktualisierte Auflage Rheinwerk Bonn 2019 ISBN 978 3 8362 6458 7 1478 S Inhaltsverzeichnis Inhaltstext Mark Michaelis Eric Lippert Essential C 7 0 6 Auflage Addison Wesley New York u a 2018 ISBN 978 1 5093 0358 8 englisch 1040 S Inhaltstext Hanspeter Mossenbock Kompaktkurs C 7 0 dpunkt Heidelberg 2018 ISBN 978 3 86490 631 2 344 S Inhaltsverzeichnis Inhaltstext PDF John Sharp Microsoft Visual C Step by Step 9 Auflage Microsoft Redmond 2018 ISBN 978 1 5093 0776 0 englisch 832 S Inhaltstext Thomas Theis Einstieg in C mit Visual Studio 2015 Ideal fur Programmieranfanger geeignet 4 aktualisierte Auflage Rheinwerk Bonn 2015 ISBN 978 3 8362 3705 5 553 S Inhaltsverzeichnis Inhaltstext Bernhard Wurm Schrodinger programmiert C Das etwas andere Fachbuch 3 Auflage Rheinwerk Bonn 2019 ISBN 978 3 8362 6968 1 749 S Inhaltsverzeichnis Inhaltstext Weblinks Bearbeiten Wikibooks Arbeiten mit NET C Lern und Lehrmaterialien C Dokumentation bei microsoft com C beim Mono Projekt Linkkatalog zum Thema C Sharp bei curlie org ehemals DMOZ Einzelnachweise Bearbeiten Welcome to C 11 abgerufen am 10 Dezember 2022 Barry Cornelius Java 5 catches up with C Abgerufen am 30 Mai 2022 englisch Bis hier her siehe Joseph Albahari Ben Albahari C 6 0 in a Nutshell The Definitive Reference 6 Auflage O Reilly Sebastopol 2016 ISBN 978 1 4919 2706 9 S 1 6 Joseph Albahari Ben Albahari C 6 0 Pocket Reference Instant Help for C 6 0 Programmers O Reilly Sebastopol 2015 ISBN 978 1 4919 2741 0 S 1 Archivierte Kopie Memento vom 2 Dezember 2012 im Internet Archive Publicly Available Standards Abgerufen am 30 Mai 2022 James Kovacs C NET History Lesson 7 September 2007 abgerufen am 25 Marz 2015 englisch Naomi Hamilton The A Z of Programming Languages C Interview mit Anders Hejlsberg Nicht mehr online verfugbar 1 Oktober 2008 archiviert vom Original am 18 Marz 2015 abgerufen am 23 Marz 2015 englisch Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www computerworld com au Standard ECMA 334 C Language Specification PDF 5 60 MB Kapitel 6 Acronyms and abbreviations Nicht mehr online verfugbar Ecma International Juni 2006 archiviert vom Original am 2 Dezember 2012 abgerufen am 23 Marz 2015 englisch Vorwort des Buches C mit Methode Christian Bleske Hrsg Alexander Mayer Michael Fischer Michael Starke Michael Steil PDF Memento vom 1 Februar 2012 im Internet Archive BillWagner C Dokumentation Einstieg Tutorials Referenz Abgerufen am 3 Juni 2022 deutsch What s new in C 11 Microsoft abgerufen am 16 Dezember 2022 englisch The NET Compiler Platform NET Platform 30 Mai 2022 abgerufen am 30 Mai 2022 C Compiler Mono Abgerufen am 17 Mai 2021 Normdaten Sachbegriff GND 4616843 6 lobid OGND AKS Abgerufen von https de wikipedia org w index php title C Sharp amp oldid 235778071