https://de.wikipedia.org/w/api.php?action=feedcontributions&feedformat=atom&user=Reflectronic Wikipedia - Benutzerbeiträge [de] 2025-05-16T10:06:11Z Benutzerbeiträge MediaWiki 1.45.0-wmf.1 https://de.wikipedia.org/w/index.php?title=C-Sharp&diff=201023106 C-Sharp 2020-06-16T07:57:10Z <p>Reflectronic: </p> <hr /> <div>{{Korrekter Titel|C#}}<br /> {{Infobox Programmiersprache<br /> | Name = C#<br /> | Logo = [[Datei:C Sharp wordmark.svg|200px]]<br /> | Beschreibung = Objektorientierte Programmiersprache<br /> | Paradigma = multiparadigmatisch: [[Strukturierte Programmierung|strukturiert]], [[Imperative Programmierung|imperativ]], [[Deklarative Programmierung|deklarativ]], [[Objektorientierte Programmierung|objektorientiert]], [[Ereignis (Programmierung)|ereignisorientiert]], [[Funktionale Programmierung|funktional]], [[Generische Programmierung|generisch]], [[Reflexion (Programmierung)|reflexiv]], [[Parallele Programmierung|parallel]]<br /> | Erscheinungsjahr = 2001<br /> | Designer = [[Anders Hejlsberg]]<br /> | Entwickler = [[Microsoft]]<br /> | AktuelleVersion = 8.0<br /> | AktuelleVersionFreigabeDatum = 23. September 2019&lt;ref&gt;{{Internetquelle |autor=BillWagner |url=https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8 |titel=What's new in C# 8.0 - C# Guide |abruf=2019-10-01 |sprache=en-us}}&lt;/ref&gt;<br /> | AktuelleVorabVersion = <br /> | AktuelleVorabVersionFreigabeDatum = <br /> | Typisierung = [[Statische Typisierung|statisch]], [[Starke Typisierung|stark]], [[Explizite Typisierung|explizit]] (optional: [[Dynamische Typisierung|dynamisch]], [[Duck-Typing|duck]], [[Implizite Typisierung|implizit]])<br /> | Implementierung = Visual C#, Mono<br /> | Standardisierungen = [[Ecma International|ECMA]]-334<br /> | Dialekte = <br /> | Beeinflusst_von = [[Java (Programmiersprache)|Java]], [[C++]], [[Object Pascal]], [[Visual Basic Classic|VB]]<br /> | Beeinflusste = [[Java (Programmiersprache)|Java]],&lt;ref name=&quot;Java 5 catches up with CS&quot;&gt;[http://www.barrycornelius.com/papers/java5/onefile/ Java 5 catches up with C#]&lt;/ref&gt; [[Vala (Programmiersprache)|Vala]], [[Cω]], [[Swift (Programmiersprache)|Swift]], [[Visual Basic .NET|VB.NET]]<br /> | Betriebssystem = alle, für die eine [[Common Language Infrastructure|CLI]]-Implementierung existiert (z.&amp;nbsp;B. Microsofts [[.NET Framework]] oder Xamarins [[Mono (Software)|Mono]])<br /> | Lizenz = <br /> | Website = [https://docs.microsoft.com/de-de/visualstudio/releasenotes/vs2017-relnotes Visual Studio]<br /> }}<br /> <br /> '''C#''' ([[Englische Sprache|englisch]] ''c sharp'' [{{IPA|siːˈʃɑːp}}]) ist eine [[Typsicherheit|typsichere]], [[Objektorientierung|objektorientierte]] [[General Purpose Language|Allzweck]]-[[Programmiersprache]]. Architekt der Sprache war [[Anders Hejlsberg]] im Auftrag von [[Microsoft]], zurzeit ist Mads Torgersen der Chef-Entwickler. Die Sprache ist an sich [[Plattformunabhängigkeit|plattformunabhängig]], wurde aber im Rahmen der [[.NET]]-Strategie entwickelt, ist auf diese optimiert und meist in deren Kontext zu finden.<br /> <br /> Historisch wurde in C# fast exklusiv für [[Microsoft Windows|Windows]] entwickelt. Durch [[Xamarin]] ist es inzwischen aber auch möglich, für [[macOS]], [[iOS (Betriebssystem)|iOS]] und [[Android (Betriebssystem)|Android]] zu entwickeln. Zudem gibt es mit [[.NET Core]] auch offizielle Unterstützung für [[GNU/Linux]] und macOS.&lt;ref&gt;Bis hier her siehe: {{Literatur |Autor=Joseph Albahari; Ben Albahari |Titel=C# 6.0 in a Nutshell. The Definitive Reference |Auflage=6. |Verlag=O'Reilly |Ort=Sebastopol |Datum=2016 |ISBN=978-1-4919-2706-9 |Seiten=1-6}} {{Literatur |Autor=Joseph Albahari; Ben Albahari |Titel=C# 6.0 Pocket Reference Instant Help for C# 6.0 Programmers |Verlag=O'Reilly |Ort=Sebastopol |Datum=2015 |ISBN=978-1-4919-2741-0 |Seiten=1}}&lt;/ref&gt;<br /> <br /> Bis Version 2 war die Sprache bei der [[Ecma International|ECMA]]&lt;ref&gt;{{Webarchiv|url=http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf |wayback=20121202194727 |text=Archivierte Kopie |archiv-bot=2019-03-08 21:28:42 InternetArchiveBot }}&lt;/ref&gt; und der [[Internationale Organisation für Normung|ISO]]&lt;ref&gt;http://standards.iso.org/ittf/PubliclyAvailableStandards/c042926_ISO_IEC_23270_2006(E).zip&lt;/ref&gt; als Standard registriert.<br /> In der Folge erschienen regelmäßig umfangreiche Erweiterungen der Sprache durch Microsoft. Durch die Entwicklung des Referenz-Compilers als Open Source (seit 2014) sind auch Community-Beiträge möglich.<br /> <br /> == Konzept ==<br /> C# greift Konzepte der Programmiersprachen [[Java (Programmiersprache)|Java]], [[C++]], [[Haskell (Programmiersprache)|Haskell]], [[C (Programmiersprache)|C]] sowie von [[Embarcadero Delphi|Delphi]] auf. C# zählt zu den [[Objektorientierte Programmierung|objektorientierten]] Programmiersprachen und unterstützt sowohl die Entwicklung von sprachunabhängigen .NET-[[Komponente (Software)|Komponenten]] als auch [[Component Object Model|COM]]-Komponenten für den Gebrauch mit [[Win32]]-[[Anwendungssoftware|Anwendungsprogrammen]].<br /> <br /> Einige der Elemente von C++, die im Allgemeinen als unsicher gelten, wie beispielsweise [[Zeiger (Informatik)|Zeiger]], werden in C# nur für sogenannten „unsicheren Code“ erlaubt, der in Zonen mit eingeschränkten [[Zugriffsrecht|Rechten]] (z.&amp;nbsp;B. bei Programmen, die aus [[Webseite]]n heraus ausgeführt werden) ohne die Zuteilung erweiterter Rechte nicht ausgeführt wird.<br /> <br /> Als .NET-Sprache verfügt auch C# über Sprachunterstützung für [[Attribut (Objekt)|Attribute]] und [[Delegation (Softwareentwicklung)|Delegaten]]. ''Attribute'' erlauben es, Informationen über eine [[Klasse (Objektorientierung)|Klasse]], ein [[Objekt (Programmierung)|Objekt]], oder eine [[Objektorientierte Programmierung#Methoden|Methode]] zu speichern, die zur [[Laufzeit (Informatik)|Laufzeit]] ausgewertet werden können. Man spricht hierbei auch von [[Metadaten]]. Ein ''Delegat'' kann auf Methoden einer Klasse verweisen. Das Konzept stellt eine Weiterentwicklung von [[Funktion (Programmierung)|Funktions]][[Zeiger (Informatik)|zeigern]] 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 überprüft wird. Für den Aufruf beinhaltet der Delegat auch den Verweis auf das zu den Methoden gehörenden Objekt. Ein Aufruf eines Delegaten ruft also gezielt eine Methode auf, der [[Implikation|implizit]] ein Objektzeiger als [[Parameter (Informatik)|Parameter]] übergeben wird. Außerdem müssen Delegaten [[Typsicherheit|typensicher]] [[Deklaration (Programmierung)|deklariert]] werden, was zur Folge hat, dass [[Kompatibilität (Technik)|Inkompatibilitäten]] der [[Signatur (Programmierung)|Methodensignaturen]] zwischen aufrufendem Delegat und der aufzurufenden Methode schon während der [[Compiler|Kompilierung]] bemerkt werden.<br /> <br /> Ab der Version 2.0 von C#, die mit [[.NET Framework]] 2.0 freigegeben wurde, unterstützt C# neben [[Generischer Typ|generischen Typen]] (englisch ''generics'') auch [[Anonyme Funktion|anonyme Methoden]], [[Codegenerierung|Generatoren]] und [[partielle Klasse]]n. 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 Verfügung.<br /> <br /> == Standardisierung ==<br /> Microsoft reichte C# im August 2000 zusammen mit [[Hewlett-Packard]] und [[Intel]] bei der Normungsorganisation [[Ecma International]] zur Normung ein. Im Dezember 2001 veröffentlichte die ECMA die Norm ECMA-334 ''C# Language Specification''. 2003 wurde C# von der [[International Organization for Standardization|ISO]] genormt (ISO/IEC 23270).<br /> <br /> 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 Ähnlichkeiten zu den [[Template (C++)|C++-Templates]] aufweisen. Im Juli 2005 übergab die ECMA die Standards und zugehörigen TRs an die ISO/IEC JTC 1.<br /> <br /> Die ECMA-Spezifikation 334 deckt nur die Sprache C# ab. Programme, die in C# geschrieben werden, nutzen gewöhnlich das .NET-Framework, das teilweise durch andere Spezifikationen beschrieben wird und teilweise [[proprietär]] ist. Dennoch ist die Sprache C# prinzipiell [[Plattformunabhängigkeit|plattformunabhängig]]. Das von Ximian (jetzt [[Xamarin]]) initiierte [[Mono (Software)|Projekt Mono]] ermöglicht beispielsweise auch Nutzern von [[macOS]] oder [[Unix]], C# für Entwicklungen auf ihrem Betriebssystem einzusetzen.<br /> <br /> Microsoft veröffentlichte die dritte Version von C# mit dem .NET-SDK 2.0 und [[Microsoft Visual Studio|Visual Studio 2005]] im November 2005.<br /> <br /> Microsoft stellte klar, dass C#, genauso wie andere .NET-Sprachen, einen wichtigen Bestandteil seiner Softwarestrategie sowohl für den internen als auch für den externen Gebrauch darstelle. Das Unternehmen übernimmt eine aktive Rolle in der Vermarktung der Sprache als Teil seiner gesamten Geschäftsstrategie.<br /> <br /> == Versionen ==<br /> {| class=&quot;wikitable&quot;<br /> |+ C#-Versionen<br /> ! rowspan=&quot;2&quot; | Jahr<br /> ! colspan=&quot;2&quot; | Version<br /> ! rowspan=&quot;2&quot; | neu eingeführte Sprachelemente<br /> |-<br /> ! .NET<br /> ! C#<br /> |-<br /> | 2002<br /> | .NET 1.0<br /> | C# 1.0<br /> | rowspan=&quot;2&quot; |<br /> |-<br /> | 2003<br /> | .NET 1.1<br /> | C# 1.2<br /> |-<br /> | 2005<br /> | .NET 2.0<br /> |rowspan=&quot;2&quot;| C# 2.0<br /> |rowspan=&quot;2&quot;|<br /> Generics&lt;br /&gt;<br /> Partielle Typen&lt;br /&gt;<br /> Anonyme Methoden&lt;br /&gt;<br /> Iteratoren&lt;br /&gt;<br /> Nullable-Datentyp&lt;br /&gt;<br /> Private setters&lt;br /&gt;<br /> Delegates&lt;br /&gt;<br /> Kovarianz und Kontravarianz&lt;br /&gt;<br /> Statische Klassen&lt;br /&gt;<br /> |-<br /> | 2006<br /> | .NET 3.0<br /> |-<br /> | 2007<br /> | .NET 3.5<br /> | C# 3.0<br /> |<br /> Implizit typisierte Variablen&lt;br /&gt;<br /> Objekt- und Collection-Initialisierer&lt;br /&gt;<br /> Automatisch implementierte Properties&lt;br /&gt;<br /> Anonyme Datentypen&lt;br /&gt;<br /> [[Erweiterungsmethode]]n&lt;br /&gt;<br /> [[LINQ]]&lt;br /&gt;<br /> Lambda-Expressions&lt;br /&gt;<br /> Expression-Trees&lt;br /&gt;<br /> Partielle Methoden&lt;br /&gt;<br /> |-<br /> | 2010<br /> | .NET 4.0<br /> | C# 4.0<br /> |<br /> Dynamisches Binding&lt;br /&gt;<br /> Benannte und optionale Argumente&lt;br /&gt;<br /> Generische [[Kovarianz und Kontravarianz|Ko- und Kontravarianz]]&lt;br /&gt;<br /> Embedded Interop-Datentypen („NoPIA“)&lt;br /&gt;<br /> |-<br /> | 2012<br /> | .NET 4.5<br /> | C# 5.0<br /> |<br /> Asynchrone Methoden&lt;br /&gt;<br /> Caller-Info-Attribute&lt;br /&gt;<br /> |-<br /> | 2015<br /> | .NET 4.6<br /> | C# 6.0<br /> |<br /> Initialisierer für Auto-Properties&lt;br /&gt;<br /> Import statischer Funktionen in den Namespace&lt;br /&gt;<br /> Exception Filters&lt;br /&gt;<br /> Indizierte Membervariablen und Elementinitialisierer&lt;br /&gt;<br /> Das Keyword &lt;code&gt;await&lt;/code&gt; in &lt;code&gt;try&lt;/code&gt;-&lt;code&gt;catch&lt;/code&gt;-&lt;code&gt;finally&lt;/code&gt; Blocks&lt;br /&gt;<br /> Collection-Initialisierer verwenden Add()-Erweiterungsmethode&lt;br /&gt;<br /> String-Interpolation&lt;br /&gt;<br /> Mehrzeilige String-Ausdrücke&lt;br /&gt;<br /> Null-Conditional Operator&lt;br /&gt;<br /> &lt;code&gt;nameof&lt;/code&gt;-Ausdruck&lt;br /&gt;<br /> Implementierung von Methoden mittels Lambda-Ausdruck&lt;br /&gt;<br /> |-<br /> | 2017<br /> | .NET 4.6.2&lt;br /&gt;.NET Core<br /> | C# 7.0..7.3<br /> |<br /> Deklarationsausdrücke auf out-Parametern&lt;br /&gt;<br /> Mustervergleiche (Pattern matching)&lt;br /&gt;<br /> &lt;code&gt;is&lt;/code&gt;-Ausdrücke mit Mustern&lt;br /&gt;<br /> &lt;code&gt;switch&lt;/code&gt;-Anweisungen mit Typ-Mustern und zusätzlichen Bedingungen&lt;br /&gt;<br /> Tupel&lt;br /&gt;<br /> Dekonstruktion von Tupeln&lt;br /&gt;<br /> Lokal deklarierte Funktionen&lt;br /&gt;<br /> Füllzeichen &lt;code&gt;_&lt;/code&gt; zur Verbesserung der Lesbarkeit von Zahlen&lt;br /&gt;<br /> Binärliterale &lt;code&gt;0b...&lt;/code&gt;&lt;br /&gt;<br /> Referenzen (Verweise) als Rückgabewert von Funktionen und als lokale Variablen&lt;br /&gt;<br /> Verallgemeinerte async-Rückgabe-Typen<br /> <br /> Die Main-Methode kann async sein&lt;br /&gt;<br /> Lambdaausdrücke &lt;code&gt;=&gt;&lt;/code&gt; in Konstruktoren, Accessoren(&lt;code&gt;get&lt;/code&gt;,&lt;code&gt;set&lt;/code&gt;) und Finalizern&lt;br /&gt;<br /> Ausnahmen innerhalb von Ausdrücken erzeugen&lt;br /&gt;<br /> Bedingte &lt;code&gt;ref&lt;/code&gt;-Ausdrücke<br /> |-<br /> |2019<br /> |.NET Core 3<br /> |C#8.0<br /> |Standardimplementierungen in Schnittstellen<br /> <br /> Switch Expressions<br /> <br /> Index- und Range-Operatoren zur Adressierung von Teilmengen<br /> <br /> asynchrone Streams (asynchrone Iteration mit foreach)<br /> <br /> nullbare Referenztypen (z.&amp;nbsp;B. String?)<br /> <br /> statische Lokale Funktionen<br /> |}<br /> <br /> == Integrierte Entwicklungsumgebungen (IDEs) ==<br /> Die dominierende Entwicklungsplattform ist '''[[Microsoft Visual Studio]]''' ([[Windows]] und [[macOS]], [[proprietäre Software]]). Es gibt auch eine Reihe anderer [[Integrierte Entwicklungsumgebung|Entwicklungsumgebungen]] (IDEs) für C#, es werden jedoch nicht immer die neusten Sprachstandards und Laufzeitumgebungen ([[.NET Core]]) unterstützt:<br /> <br /> * [[Microsoft Visual Studio Code|''Visual Studio Code'']] (Windows, macOS und [[GNU/Linux|Linux]])<br /> <br /> * [[Programmiersprachen für Kinder#Baltie|Baltie]] (Windows, proprietär) speziell für Kinder<br /> * [[JetBrains]] bietet mit ''ReSharper'' (Windows, proprietär) eine Reihe von [[Plug-in]]s für Visual Studio an, welche dieses verbessern sollen<br /> * Rider (Windows, Linux und Mac OS)<br /> * [[MonoDevelop]] (GNU/Linux; [[FLOSS]])<br /> * [[Notepad++]] (Windows; FLOSS) mit dem Plugin ''CS-Script'' (FLOSS) ermöglicht [[Autovervollständigung]], Codeausführung und Debugging<br /> * das ''OmniSharp''-Projekt ermöglicht, erleichtert und erweitert die Möglichkeiten verschiedener verbreiteter Editoren ([[Atom (Texteditor)|Atom]], [[Adobe Brackets]], [[Emacs]], [[Sublime Text]], [[Vim]] und Visual Studio Code) bezüglich C# (als Teil von .NET)<br /> * [[SharpDevelop]] (Windows; FLOSS)<br /> * [[Xamarin Studio]] (Windows und OS X)<br /> <br /> == Compiler ==<br /> In der Regel übersetzen die C# Compiler nicht unmittelbar in die Maschinensprache, sondern in eine Zwischensprache. {{Siehe auch|Common Intermediate Language|.NET Compiler Platform}} Bei der Ausführung wird dann eine virtuelle Maschine gestartet, die den zweiten Teil des Übersetzungsprozesses in einem Just-In-Time Compiler erledigt.<br /> <br /> Es existieren vier [[Compiler]] für C#:<br /> * der von [[Microsoft]] für die neuesten Versionen von C# und [[Visual Basic .NET]] entwickelte '''[[.NET Compiler Platform|Roslyn]]'''-Compiler ([[Windows]]; [[FLOSS]])&lt;ref&gt;https://github.com/dotnet/roslyn&lt;/ref&gt; als neuste Iteration der '''[[.NET Compiler Platform]]''' (deren ältere Versionen [[proprietäre Software]] waren)<br /> * der von [[Xamarin]] für '''[[Mono (Software)|Mono]]''' (Windows, [[macOS]], [[GNU/Linux]]; FLOSS)<br /> * der eingestellte '''[[DotGNU]]''' (FLOSS)<br /> * CoreRT/[[.NET Native|.Net Native]]<br /> <br /> == Namensgebung ==<br /> '''C#''' wurde unter dem Codenamen '''Cool''' entwickelt, der jedoch aus Gründen des [[Marketing]]s zur Veröffentlichung geändert wurde. Der Name ''C Sharp'' leitet sich vom Zeichen [[Kreuz (Notenschrift)|Kreuz]] ({{Musik|♯}}, englisch {{lang|en|''sharp''}}) der [[Notenschrift]] ab,&lt;ref&gt;{{Internetquelle |autor=James Kovacs |url=http://jameskovacs.com/2007/09/07/cnet-history-lesson/ |titel=C#/.NET History Lesson |datum=2007-09-07 |zugriff=2015-03-25 |sprache=en}}&lt;/ref&gt; was dort für eine [[Chromatik|Erhöhung]] des [[Grundton]]s um einen [[Halbton]] steht. ''C sharp'' ist also der [[Englische Sprache|englische]] Begriff für den Ton ''cis''. Dies ist eine [[Anspielung]] darauf, dass der Name der Programmiersprache [[C++]] der Notation für die [[Inkrement und Dekrement|Erhöhung des Werts]] einer Variable um eins entstammt. Des Weiteren kann man das Kreuz-Zeichen als Kombination von vier Plus-Zeichen betrachten, was eine Erhöhung von C++ darstellen soll.&lt;ref&gt;{{Internetquelle |autor=Naomi Hamilton |url=https://www.computerworld.com.au/article/261958/a-z_programming_languages_c_/?pp=2 |titel=The A-Z of Programming Languages: C# |titelerg=Interview mit Anders Hejlsberg |datum=2008-10-01 |zugriff=2015-03-23 |sprache=en}}&lt;/ref&gt; Allerdings enthält der Name nicht das Kreuz-Zeichen der Musiknotation, sondern ein [[Doppelkreuz (Schriftzeichen)|Doppelkreuz bzw. Raute]],&lt;ref&gt;{{Internetquelle |url=http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf |titel=Standard ECMA-334 „C# Language Specification“ |titelerg=Kapitel 6 „Acronyms and abbreviations“ |hrsg=Ecma International |datum=2006-06 |zugriff=2015-03-23 |format=PDF; 5,60&amp;#8239;MB |sprache=en |archiv-url=https://web.archive.org/web/20121202194727/http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf |archiv-datum=2012-12-02 |offline=ja |archiv-bot=2019-03-08 21:28:42 InternetArchiveBot }}&lt;/ref&gt; das häufig als Ersatzzeichen für das Kreuz genutzt wird, weil es im Gegensatz zum Kreuz auf üblichen Tastaturen vorkommt.<br /> <br /> In künstlerischen Darstellungen wird teilweise auch das Notenschriftzeichen verwendet, was in der Folge von einigen für korrekt gehalten wird.&lt;ref&gt;Vorwort des Buches ''C# mit Methode'', Christian Bleske (Hrsg.), Alexander Mayer, Michael Fischer, Michael Starke, Michael Steil ({{Webarchiv|url=http://www.cul.de/data/csharppr2.pdf |wayback=20120201113112 |text=PDF |archiv-bot=2019-03-08 21:28:42 InternetArchiveBot }})&lt;/ref&gt; Eindeutig falsch ist die zweifache Verwendung des [[Kreuz (Schriftzeichen)|doppelten Dagger-Zeichens]].<br /> <br /> == Sprachelemente ==<br /> {{Hauptartikel|Sprachelemente von C-Sharp}}<br /> <br /> C#-Syntaxbeispiel für ein einfaches Kommandozeilen-Programm:<br /> <br /> &lt;syntaxhighlight lang=&quot;csharp&quot;&gt;<br /> using System;<br /> <br /> class Program {<br /> static void Main(string[] args) {<br /> Console.WriteLine(&quot;Hallo Welt!&quot;);<br /> }<br /> }<br /> &lt;/syntaxhighlight&gt;<br /> <br /> Einfache MessageBox in C#<br /> <br /> &lt;syntaxhighlight lang=&quot;csharp&quot;&gt;<br /> using System;<br /> using System.Windows.Forms;<br /> <br /> class Program {<br /> public static void Main() {<br /> MessageBox<br /> .Show(&quot;Text&quot;, &quot;Titel&quot;, MessageBoxButtons.OK, MessageBoxIcon.Hand);<br /> }<br /> }<br /> &lt;/syntaxhighlight&gt;<br /> <br /> FileStream-Beispiel in C#<br /> <br /> &lt;syntaxhighlight lang=&quot;csharp&quot;&gt;<br /> using System;<br /> using System.IO;<br /> using System.Text;<br /> <br /> class Program {<br /> public static void Main() {<br /> // Text, der in die Datei geschrieben wird<br /> const string textToWrite = &quot;Hallo Welt&quot;;<br /> const string fileName = &quot;dateiname.txt&quot;;<br /> <br /> // Datei &quot;dateiname.txt&quot; wird erstellt oder überschrieben<br /> using (var stream = new FileStream(fileName,<br /> FileMode.Create,<br /> FileAccess.Write)) {<br /> // Der Text wird UTF8-kodiert in die Datei geschrieben<br /> var data = Encoding.UTF8.GetBytes(textToWrite);<br /> stream.Write(data, 0, data.Length);<br /> <br /> // Datei wird geschlossen...<br /> }<br /> }<br /> }<br /> &lt;/syntaxhighlight&gt;<br /> <br /> Networking-Beispiel in C#<br /> <br /> &lt;syntaxhighlight lang=&quot;csharp&quot;&gt;<br /> using System.Text;<br /> using System.Net;<br /> using System.Net.Sockets;<br /> using static System.Console;<br /> <br /> class Program {<br /> public static void Main() {<br /> // Daten, die gesendet werden<br /> const string textToSend = &quot;Hallo Welt&quot;;<br /> // Endpunkt, zu dem verbunden wird<br /> const string localhost = &quot;127.0.0.1&quot;;<br /> const int port = 80;<br /> <br /> var data = Encoding.UTF8.GetBytes(textToSend);<br /> var ip = IPAddress.Parse(localhost);<br /> var ipEndPoint = new IPEndPoint(ip, port);<br /> <br /> // Socket, das verwendet wird<br /> using (var socket = new Socket(AddressFamily.InterNetwork,<br /> SocketType.Stream,<br /> ProtocolType.Tcp)) {<br /> // Es wird zum Endpunkt verbunden<br /> socket.Connect(ipEndPoint);<br /> // Daten werden gesendet<br /> var byteCount = socket.Send(data, SocketFlags.None);<br /> WriteLine(&quot;Es wurden {0} bytes gesendet&quot;, byteCount);<br /> // Puffer für die zu empfangenen Daten<br /> var buffer = new byte[256];<br /> // Daten werden empfangen<br /> byteCount = socket.Receive(buffer, SocketFlags.None);<br /> <br /> // Wenn eine Antwort erhalten wurde, diese ausgeben<br /> if (byteCount &gt; 0) {<br /> WriteLine(&quot;Es wurden {0} Bytes empfangen&quot;, byteCount);<br /> var answer = Encoding.UTF8.GetString(buffer);<br /> WriteLine(&quot;Empfangene Daten: {0}&quot;, answer);<br /> }<br /> <br /> // Verbindung wird geschlossen<br /> }<br /> }<br /> }<br /> &lt;/syntaxhighlight&gt;<br /> <br /> == Sprachderivate ==<br /> * [[Cω]]<br /> * [[EXtensible C-Sharp|eXtensible C#]] (XC#)<br /> * [[Metaphor]]<br /> * [[Multimedia C-Sharp|MMC#]]&lt;ref name=&quot;mmc#&quot;&gt;[http://portal.acm.org/citation.cfm?id=1713327],O.Lampl;L.Böszörmenyi; Adaptive quality-aware programming with declarative QoS constraints&lt;/ref&gt;<br /> * [[Multiprocessor C-Sharp|Multiprocessor C#]] (MC#)<br /> * [[Polyphonic C-Sharp|Polyphonic C#]]<br /> * [[Sing-Sharp|Sing#]]<br /> * [[Spec-Sharp|Spec#]]<br /> * [[Vala (Programmiersprache)|Vala]] für Programme des [[Gnome]]-Projektes<br /> <br /> == Siehe auch ==<br /> * [[Liste von .NET-Sprachen]]<br /> * [[Liste von Programmiersprachen]]<br /> <br /> == Literatur ==<br /> Microsoft bietet auf der [https://docs.microsoft.com/de-de/dotnet/csharp/ Dokumentationsseite] umfangreiche kostenlose Möglichkeiten zum Erlernen der Sprache an, die komplette Dokumentation kann auch als [[Portable Document Format|PDF-Dokument]] heruntergeladen werden (z.&amp;nbsp;Zt. 2447 Seiten, Stand Feb. 2020). Daneben gibt es jede Menge käuflich zu erwerbende gedruckte Literatur, die allerdings den Nachteil hat, schnell zu veralten:<br /> <br /> * {{Literatur |Autor=Joseph Albahari; Ben Albahari |Titel=C# 6.0 in a Nutshell. The Definitive Reference |Auflage=6. |Verlag=O'Reilly |Ort=Sebastopol |Datum=2016 |ISBN=978-1-4919-2706-9 |Seiten=1136 |Sprache=en |Online=[https://cdn.oreillystatic.com/oreilly/booksamplers/9781491927069_sampler.pdf Inhaltsverzeichnis], [http://shop.oreilly.com/product/0636920040323.do Inhaltstext]}}<br /> * {{Literatur |Autor=Joseph Albahari; Ben Albahari |Titel=C# 8.0 Pocket Reference: Instant Help for C# 8.0 Programmers |Verlag=O'Reilly |Ort=Sebastopol |Datum=2019 |ISBN=978-1-4920-5120-6 |Seiten=240 |Sprache=en |Online=[https://www.oreilly.com/library/view/c-80-pocket/9781492051206/ Inhaltstext]}}<br /> * {{Literatur |Autor=Walter Doberenz; Thomas Gewinnus |Titel=Visual C# 2015. Grundlagen, Profiwissen und Rezepte |Verlag=Hanser |Ort=München |Datum=2015 |ISBN=978-3-446-44381-5 |Seiten=1195 |Online=[http://d-nb.info/1070705578/04 Inhaltsverzeichnis], [http://deposit.dnb.de/cgi-bin/dokserv?id=5242964&amp;prov=M&amp;dok_var=1&amp;dok_ext=htm Inhaltstext]}}<br /> * {{Literatur |Autor=Matthias Geirhos |Titel=Professionell entwickeln mit C# 6 und Visual Studio 2015. Das Praxisbuch |Auflage=3., aktualisierte und erweiterte |Verlag=Rheinwerk |Ort=Bonn |Datum=2016 |ISBN=978-3-8362-3929-5 |Seiten=1209 |Online=[http://d-nb.info/107483867x/04 Inhaltsverzeichnis], [http://deposit.dnb.de/cgi-bin/dokserv?id=5337040&amp;prov=M&amp;dok_var=1&amp;dok_ext=htm Inhaltstext]}}<br /> * {{Literatur |Autor=Jay Hilyard; Stephen Teilhet |Titel=C# 6.0 Cookbook. Solutions for C# Developers |Auflage=4. |Verlag=O'Reilly |Ort=Sebastopol |Datum=2015 |ISBN=978-1-4919-2146-3 |Seiten=704 |Sprache=en |Online=[https://cdn.oreillystatic.com/oreilly/booksamplers/9781491921463_sampler.pdf Inhaltsverzeichnis], [http://shop.oreilly.com/product/0636920037347.do Inhaltstext]}}<br /> * {{Literatur |Autor=Andreas Kühnel |Titel=C# 8 mit Visual Studio 2019 : das umfassende Handbuch |Auflage=8., aktualisierte |Verlag=Rheinwerk |Ort=Bonn |Datum=2019 |ISBN=978-3-8362-6458-7 |Seiten=1478 |Online=[https://d-nb.info/1181888840/04 Inhaltsverzeichnis], [http://deposit.dnb.de/cgi-bin/dokserv?id=e1fcbb57e053475991d0be35740eb378&amp;prov=M&amp;dok_var=1&amp;dok_ext=htm Inhaltstext]}}<br /> * {{Literatur |Autor=Mark Michaelis; Eric Lippert |Titel=Essential C# 7.0 |Auflage=6. |Verlag=Addison-Wesley |Ort=New York u.&amp;nbsp;a. |Datum=2018 |ISBN=978-1-5093-0358-8 |Seiten=1040 |Sprache=en |Online=[https://bookshop.pearson.de/essential-c-7-0.html Inhaltstext]}}<br /> * {{Literatur |Autor=Hanspeter Mössenböck |Titel=Kompaktkurs C# 7.0 |Verlag=dpunkt |Ort=Heidelberg |Datum=2018 |ISBN=978-3-86490-631-2 |Seiten=344 |Online=[https://www.dpunkt.de/common/leseproben//13314/2_Inhaltsverzeichnis.pdf Inhaltsverzeichnis], [https://www.dpunkt.de/buecher/13314/9783864906312-kompaktkurs-c%23-7.html Inhaltstext]}}<br /> * {{Literatur |Autor=John Sharp |Titel=Microsoft Visual C# Step by Step |Auflage=9. |Verlag=Microsoft |Ort=Redmond |Datum=2018 |ISBN=978-1-5093-0776-0 |Seiten=832 |Sprache=en |Online=[https://www.microsoftpressstore.com/store/microsoft-visual-c-sharp-step-by-step-9781509307760 Inhaltstext]}}<br /> * {{Literatur |Autor=Thomas Theis |Titel=Einstieg in C# mit Visual Studio 2015. Ideal für Programmieranfänger geeignet |Auflage=4., aktualisierte |Verlag=Rheinwerk |Ort=Bonn |Datum=2015 |ISBN=978-3-8362-3705-5 |Seiten=553 |Online=[http://d-nb.info/1071813560/04 Inhaltsverzeichnis], [http://deposit.dnb.de/cgi-bin/dokserv?id=5284238&amp;prov=M&amp;dok_var=1&amp;dok_ext=htm Inhaltstext]}}<br /> * {{Literatur |Autor=Bernhard Wurm |Titel=Schrödinger programmiert C#. Das etwas andere Fachbuch |Auflage=3. |Verlag=Rheinwerk |Ort=Bonn |Datum=2019 |ISBN=978-3-8362-6968-1 |Seiten=749 |Online=[http://d-nb.info/1173723153/04 Inhaltsverzeichnis], [http://deposit.dnb.de/cgi-bin/dokserv?id=449bcaf768754373bd3cab360ff1fd0e&amp;prov=M&amp;dok_var=1&amp;dok_ext=htm Inhaltstext]}}<br /> <br /> == Einzelnachweise ==<br /> &lt;references /&gt;<br /> <br /> == Weblinks ==<br /> {{Wikibooks|Arbeiten mit .NET: C-Sharp|Arbeiten mit .NET: C#}}<br /> * [https://msdn.microsoft.com/de-de/library/kx37x362.aspx Visual C#] im [[MSDN]]<br /> * [http://www.mono-project.com/docs/about-mono/languages/csharp/ C#] beim [[Mono (Software)|Mono-Projekt]]<br /> * {{YouTube | id=lisiwUZJXqQ | title=C#-Tutorial von ''Derek Banas''}}<br /> * [https://www.uni-trier.de/index.php?id=22777 Einführung in das Programmieren mit C# 7.3] vom Z''entrum für Informations-, Medien- und Kommunikationstechnologie'' der [[Universität Trier]]<br /> * {{dmoz|World/Deutsch/Computer/Programmieren/Sprachen/C-Sharp}}<br /> <br /> {{Normdaten|TYP=s|GND=4616843-6}}<br /> <br /> {{SORTIERUNG:Csharp}}<br /> [[Kategorie:Objektorientierte Programmiersprache]]<br /> [[Kategorie:C-Sharp| ]]<br /> [[Kategorie:Microsoft]]<br /> [[Kategorie:Imperative Programmiersprache]]<br /> [[Kategorie:Programmiersprache für die Common Language Runtime]]</div> Reflectronic