C# kann nicht isoliert verwendet werden und muss zusammen mit dem .NET Framework verwendet werden.
(1) Die Architektur und Methodik von C# spiegeln die grundlegende Methodik von .NET wider.
(2) In den meisten Fällen hängen die spezifischen Sprachfunktionen von C# von .NET-Funktionen ab oder basieren auf .NET-Basisklassen.
Einige von .NET unterstützte Funktionen werden von C# nicht unterstützt. Es gibt andere von der C#-Sprache unterstützte Funktionen, die von .NET nicht unterstützt werden.
Der Kern Der Kern des .NET Frameworks ist seine Laufzeitumgebung, die Common Language Runtime (CLR) oder .NET Runtime genannt wird.
Code, der unter der Kontrolle der CLR ausgeführt wird, wird normalerweise als verwalteter Code bezeichnet.
So kompiliert .NET Code:
Phase 1: Kompilieren Sie den Quellcode in Microsoft Intermediate Language (IL).
*IL ähnelt dem Bytecode in JAVA.
Phase 2: CLR kompiliert IL in plattformspezifischen Code.
Der JIT (Just-in-Time-Compiler) kompiliert, wenn die Anwendung ausgeführt wird, sodass der JIL Bescheid weiß Je nachdem, auf welchem Prozessortyp das Programm ausgeführt wird, kann es für diesen Prozessor optimiert werden, um die Leistung zu verbessern.
Visual Basic 2013, Visual C++ 2013, Visual F#, COM und COM+, Windows-Runtime.
Die Hauptmerkmale der Zwischensprache:
IL erlaubt im Allgemeinen keine Operationen an mehrdeutigen Datentypen , obwohl das Erzwingen der Typsicherheit in den meisten Fällen die Leistung zu beeinträchtigen scheint Im Folgenden erhalten wir weitere Vorteile aus den von .NET bereitgestellten Diensten, die auf Typsicherheit basieren. Zu diesen Diensten gehören:
Sprachinteroperabilität
Werttyp (Variablentyp), Variablen speichern ihre Daten direkt, Zwischensprache wird auf dem Stapel gespeichert (wenn sie als Felder in einem Referenztyp deklariert werden, werden sie inline im Stapel gespeichert).
Referenztyp (Referenztyp), Variablen speichern nur Adressen und Instanzen von Referenztypen werden immer in einem Speicherbereich namens „verwalteter Heap“ gespeichert.
Erzwungenes Tippen
Die wahre Bedeutung der Sprachinteroperabilität Die Verwendung einer Sprachklasse sollte sein geschrieben, um direkt mit Klassen zu kommunizieren, die in einer anderen Sprache geschrieben sind. Ein solches Tool wird (von der Visual Studio-IDE) bereitgestellt (nicht von der CLR).
Objektorientiert und unter Verwendung von Schnittstellen
Werttypen und Signifikante Unterschiede zwischen Referenztypen.
Die Bedeutung einer starken Datentypisierung für die Sprachinteroperabilität
Wenn eine Klasse von Instanzen abgeleitet ist oder diese enthält Für andere Klassen muss es alle von anderen Klassen verwendeten Datentypen kennen, weshalb die Sprachinteroperabilität sehr wichtig ist.
Lösungen in .NET
CTS definiert vordefinierte Daten, die in den Zwischensprachentypen verwendet werden können Alle Sprachen, die auf das .NET Framework abzielen, können kompilierten Code generieren, der letztendlich auf diesen Typen basiert.
Mit CTS können Sie auch Ihre eigenen Codetypen definieren.
Die hierarchische Struktur von CTS spiegelt die Einzigartigkeit der Zwischensprache wider. erbt den objektorientierten Ansatz von .
Es ist akzeptabel, Nicht-CLS-Code zu schreiben, wir können jedoch nicht garantieren, dass IL kompiliert wird Der Code unterstützt die Sprachinteroperabilität vollständig.
Müllabfuhr
Sicherheit
Anwendungsdomäne
Der Garbage Collector wird für die Speicherverwaltung in .NET verwendet, insbesondere kann er den benötigten Speicher wiederherstellen Ausführen von Anwendungen.
Überprüfen Sie den verwalteten Heap auf nicht referenzierte Objekte und löschen Sie diese.
Verwenden Sie Ausnahmen, um Fehler zu behandeln
Verwenden Sie Attribute
Das obige ist der detaillierte Inhalt vonC# Advanced Programming (1) – .NET-Architektur. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!