Darf ich wissen, was der Unterschied zwischen C # und .NET ist? Wenn ich an C # denke, würde ich sofort sagen, dass es sich um eine .NET-Sprache handelt. Wenn ich jedoch nach Stellenangeboten suche, müssen die Kandidaten über C # - und .NET-Erfahrung verfügen. Kann mir jemand eine Erklärung geben?
204
Antworten:
Zusätzlich zu dem, was Andrew gesagt hat, ist es erwähnenswert, dass:
Die Unterscheidung zwischen einer Sprache , einer Laufzeit und einer Bibliothek ist in .NET / C # strenger als beispielsweise in C ++, wo die Sprachspezifikation auch einige grundlegende Bibliotheksfunktionen enthält. Die C # -Spezifikation sagt nur sehr wenig über die Umgebung aus (im Grunde sollte sie einige Typen wie enthalten
int
, aber das ist mehr oder weniger alles).quelle
C # ist eine Programmiersprache. .NET ist ein Sammelbegriff, der sowohl das .NET Framework (eine Anwendungsframework-Bibliothek) als auch die Common Language Runtime abdeckt, die die Laufzeit darstellt, in der .NET-Assemblys ausgeführt werden.
Die Implementierung von C # durch Microsoft ist stark in .NET Framework integriert, sodass verständlich ist, dass die beiden Konzepte verwechselt werden. Es ist jedoch wichtig zu verstehen, dass es sich um zwei sehr unterschiedliche Dinge handelt.
Hier ist eine in C # geschriebene Klasse:
Hier ist eine in C # geschriebene Klasse, die explizit eine .NET Framework-Assembly, einen Typ und eine Methode verwendet:
Wie bereits erwähnt, ist es sehr schwierig, die Microsoft-Implementierung von C # auch ohne das .NET-Framework zu verwenden. Meine erste
Example
Implementierung oben verwendet sogar das .NET-Framework (implizit ja, aber es verwendet es trotzdem), weil es vonExample
erbtSystem.Object
.Der Grund, warum ich den Ausdruck "Implementierung von C # durch Microsoft" verwende, ist, dass andere Implementierungen von C # verfügbar sind .
quelle
C # ist eine Programmiersprache, .NET ist das Framework, auf dem die Sprache basiert.
quelle
C # ist eine starke objektorientierte Programmiersprache, die hauptsächlich auf dem .NET Framework basiert.
C # ist das Flugzeug und .NET ist die Landebahn;)
quelle
C # ist eine Sprache, .NET ist ein Anwendungsframework. Die .NET-Bibliotheken können in der CLR ausgeführt werden, und daher kann jede Sprache, die in der CLR ausgeführt werden kann, auch die .NET-Bibliotheken verwenden.
Wenn Sie mit Java vertraut sind, ist dies ähnlich ... Java ist eine Sprache, die auf der JVM basiert ... obwohl jede der vormontierten Java-Bibliotheken von einer anderen Sprache verwendet werden kann, die auf der JVM basiert.
quelle
CLR
?Wenn Leute über das ".net Framework" sprechen, kombinieren sie normalerweise zwei Hauptbereiche - die Laufzeitbibliothek und die virtuelle Maschine, auf der der .net-Code tatsächlich ausgeführt wird.
Wenn Sie eine Klassenbibliothek in Visual Studio in C # erstellen, folgt die DLL einem vorgeschriebenen Format. Grob gesagt gibt es einen Abschnitt, der Metadaten enthält, in denen beschrieben wird, welche Klassen darin enthalten sind und welche Funktionen sie haben usw. und in denen beschrieben wird, wo In der Binärdatei existieren diese Objekte. Dieses gemeinsame .net-Format ermöglicht die einfache gemeinsame Nutzung von Bibliotheken zwischen .net-Sprachen (C #, VB.Net, F # und anderen). Obwohl ein Großteil der .net- "Laufzeitbibliothek" jetzt in C # geschrieben ist (glaube ich), können Sie sich vorstellen, wie viele von ihnen in nicht verwalteten Sprachen geschrieben, aber in diesem vorgeschriebenen Format angeordnet sein könnten, damit sie von .net-Sprachen verwendet werden können .
Das eigentliche "Fleisch" der Bibliothek, die Sie erstellen, besteht aus CIL ("Common Intermediate Language"), das der Assemblersprache von .net ein wenig ähnelt. Auch diese Sprache ist die gemeinsame Ausgabe aller .net-Sprachen macht .net-Bibliotheken für jede .net-Sprache nutzbar.
Mit dem Tool "ildasm.exe", das in Microsoft SDKs frei verfügbar ist (und sich möglicherweise bereits auf Ihrem Computer befindet), können Sie sehen, wie C # -Code in Metadaten und IL konvertiert wird. Ich habe ein Beispiel am Ende dieser Antwort als Beispiel eingefügt.
Wenn Sie Execute .net Code ausführen, passiert häufig, dass die virtuelle .net Virtual Machine diese IL liest und verarbeitet. Dies ist die andere Seite von .net, und Sie können sich wahrscheinlich vorstellen, dass dies leicht in einer nicht verwalteten Sprache geschrieben werden kann - es muss "nur" VM-Anweisungen lesen und ausführen (und in den Garbage Collector integrieren, der ebenfalls benötigt wird) nicht .net Code sein).
Was ich beschrieben habe, ist (wieder ungefähr), was passiert, wenn Sie eine ausführbare Datei in Visual Studio erstellen (für weitere Informationen empfehle ich das Buch "CLR via C # von Jeffrey Richter" - es ist sehr detailliert und hervorragend geschrieben).
Es kann jedoch vorkommen, dass Sie C # schreiben, das nicht in einer .net-Umgebung ausgeführt wird. Beispielsweise "kompiliert" Bridge.NET C # -Code in JavaScript, das dann im Browser ausgeführt wird (das Team, das es erstellt hat) Der Aufwand für das Schreiben von Versionen der .net-Laufzeitbibliothek, die in JavaScript geschrieben sind, und damit die Leistungsfähigkeit und Flexibilität der .net-Bibliothek für das generierte JavaScript. Dies ist ein perfektes Beispiel für die Trennung zwischen C # und .net - es ist möglich, C # für verschiedene "Ziele" zu schreiben. Sie können auf die .net-Laufzeitumgebung abzielen (wenn Sie eine ausführbare Datei erstellen) oder auf die Browserumgebung (wenn Sie Bridge.NET verwenden).
Eine (sehr) einfache Beispielklasse:
Die resultierenden Metadaten und IL (abgerufen über ildasm.exe):
quelle
In .NET finden Sie nicht nur C #. Sie können beispielsweise Visual Basic finden. Wenn für einen Job .NET-Kenntnisse erforderlich sind, ist wahrscheinlich ein Programmierer erforderlich, der alle vom .NET-Framework bereitgestellten Sprachen kennt.
quelle
C # ist eine Programmiersprache.
.Net ist ein Framework zum Erstellen von Anwendungen unter Windows.
Das .NET-Framework ist nicht auf C # beschränkt. Verschiedene Sprachen können auf das .NET-Framework abzielen und Anwendungen mit diesem Framework erstellen. Beispiele sind F # oder VB.Net
quelle
C#
hat keine separate Laufzeitbibliothek. Es wird.NET
als Laufzeitbibliothek verwendet.quelle
Hier habe ich Ihnen einen Link bereitgestellt, unter dem Sie erklären, was C # -Sprache und die .NET Framework-Plattformarchitektur sind . Denken Sie daran, dass C # eine universelle, objektorientierte Programmiersprache ist und unter .NET Framework ausgeführt wird.
.NET Framework enthält eine große Klassenbibliothek namens Framework Class Library (FCL) und bietet Benutzeroberfläche, Datenzugriff, Datenbankkonnektivität, Kryptografie, Entwicklung von Webanwendungen, numerische Algorithmen und Netzwerkkommunikation.
.NET Framework wurde von Microsoft entwickelt und läuft hauptsächlich unter Microsoft Windows.
Einführung in die C # -Sprache und .NET Framework aus Microsoft Docs
quelle