Heim > Backend-Entwicklung > C#.Net-Tutorial > Detaillierte Erklärung von Hello World in C#, das ohne IDE geschrieben werden kann (Bild)

Detaillierte Erklärung von Hello World in C#, das ohne IDE geschrieben werden kann (Bild)

黄舟
Freigeben: 2017-03-10 11:24:40
Original
1467 Leute haben es durchsucht

Es ist sehr einfach, Hello World in C# mit einer IDE wie Visual Studio zu schreiben, aber können Sie Hello World ohne IDE ausdrucken? Das bedeutet nicht, ohne IDE zu arbeiten, sondern das Ausführungsmodell von CLR zu lernen.

Hallo Welt

1. Erstellen Sie einen neuen Notizblock, geben Sie den folgenden Code ein und speichern Sie ihn als HelloWorld.txt.

using System;
namespace HelloWorld
{
   class Program
   {
        static void Main(string[] args) {
            Console.WriteLine("Hello World!");
            Console.ReadKey();
        }
    }
}
Nach dem Login kopieren

2. Öffnen Sie das Eingabeaufforderungsprogramm Visual Studio 2008 (2005, 2010)

Detaillierte Erklärung von Hello World in C#, das ohne IDE geschrieben werden kann (Bild)

3. Wechseln Sie in das Verzeichnis von HelloWorld.txt

Detaillierte Erklärung von Hello World in C#, das ohne IDE geschrieben werden kann (Bild)

4. Führen Sie den Befehl aus: csc /out:Hello.exe HelloWorld.txt

Detaillierte Erklärung von Hello World in C#, das ohne IDE geschrieben werden kann (Bild)

Wenn nichts Unerwartetes passiert, wird Hello.exe kompiliert und Hello World kann gedruckt werden.

CLR-Ausführungsmodell – Kompilierzeit

Der Ausführungsprozess eines CLR-Programms ist grob in zwei Schritte unterteilt, den Kompilierungszeitraum und den Laufzeitzeitraum. Der Kompilierungszeitraum ist ungefähr wie folgt:

Detaillierte Erklärung von Hello World in C#, das ohne IDE geschrieben werden kann (Bild)

Der Kompilierungszeitraum kann auch logisch in zwei Schritte unterteilt werden:

1. Der CLR-Compiler (C#) akzeptiert Quellcodedateien und kompiliert sie in verwaltete Module. Das verwaltete Modul umfasst IL-Code, Metadaten, CLR-Header und andere Komponenten. Im obigen Beispiel wird HelloWorld.txt in ein verwaltetes Modul kompiliert.

2. Im Allgemeinen enthält eine Assembly viele Quellcodedateien (hier gibt es nur HelloWorld.txt) und Ressourcendateien. Der zweite Schritt besteht darin, die entsprechenden Kompilierungsergebnisse jeder Quellcodedatei und Ressourcendatei in einer Assembly zusammenzuführen.

Führen Sie die beiden oben genannten Schritte aus, um eine XX.dll- oder XX.exe-Assembly zu erhalten, genau wie die Hello.exe oben.

Woher weiß der Compiler, ob er in ein verwaltetes Modul oder eine Ressourcendatei kompilieren soll? Dies entspricht dem Generierungsvorgang der Dateiattribute von Visual Studio Klicken Sie mit der rechten Maustaste auf die Datei einer beliebigen Visual Studio-Lösungsressourcenlösung -->Eigenschaften-->Build-Vorgang:

Detaillierte Erklärung von Hello World in C#, das ohne IDE geschrieben werden kann (Bild) Geben Sie Klasse1 als eingebettete Ressource an. Wenn Sie sie mit ILSpy überprüfen, werden Sie feststellen, dass Klasse1 nur in der Assembly eingebettet ist, mit dem Namen: Namespace:

Detaillierte Erklärung von Hello World in C#, das ohne IDE geschrieben werden kann (Bild) Sie können sogar ein Bild so einstellen, dass es kompiliert wird, und den Compiler versuchen lassen, es zu kompilieren, er meldet jedoch einen Fehler.

Laufzeit

Die Assembly wird oben generiert und enthält IL-Code, der noch kein ausführbarer Code ist. IL ist eine CPU-unabhängige Maschinensprache, die von einem JIT-Compiler (Just-in-Time) in nativen Code (CPU-Anweisungen) kompiliert wird, bis die Assembly aufgerufen wird. Zur Laufzeit führt die CLR die folgenden Schritte aus:

1. Überprüfen Sie die Sicherheitsmerkmale der Baugruppe

2. Speicherplatz im Speicher zuweisen

3. Senden Sie den ausführbaren Code in der Assembly an den JIT-Compiler und kompilieren Sie einen Teil davon in nativen Code (CPU-Anweisungen).

Der ausführbare Code der Assembly wird bei Bedarf vom JIT-Compiler kompiliert, und dann wird der native Code (CPU-Anweisungen) für die spätere Ausführung im Programm zwischengespeichert. Sobald die Anwendung beendet wird, wird auch der kompilierte native Code verworfen.

Wenn Sie beispielsweise den obigen Code ändern in:

Die erste WriteLine muss zuerst JIT-kompiliert und dann ausgeführt werden. Da der WriteLine-Code kompiliert wurde, führt die zweite WriteLine den Code direkt im Speicherblock aus und überspringt die JIT-Kompilierung.
static void Main(string[] args) {
    Console.WriteLine("Hello");
    Console.WriteLine("World!");
    Console.ReadKey();
}
Nach dem Login kopieren

Aufgrund der Speicherzuweisung, des JIT-Kompilierungsprozesses usw. verursacht das Programm beim ersten Ausführen einen gewissen Leistungsverlust. Dieses Gefühl ist besonders deutlich, wenn das Drücken von F5 lange dauert Die Homepage wird angezeigt.

Lassen Sie uns diesen Prozess unten simulieren und erleben. Verwenden Sie eine Reihe von Klassen, um die Speicherzuweisungszeit zu verlängern. Weitere Informationen finden Sie in dieser Datei HelloWorld.cs:

Detaillierte Erklärung von Hello World in C#, das ohne IDE geschrieben werden kann (Bild) Führen Sie den Befehl erneut aus: csc /out:Hello.exe HelloWorld.txt, um Hello.exe abzurufen. Während der Ausführung wird festgestellt, dass es eine gewisse Verzögerung gibt, bevor Hello World gedruckt wird.

Generieren Sie nativen Code

Mithilfe von NGen.exe, das von .NET bereitgestellt wird, kann der IL-Code in nativen Code kompiliert werden, wodurch die oben genannten Probleme gelöst werden können. NGen.exe hat zwei Funktionen:

1. Beschleunigen Sie die Startgeschwindigkeit von Anwendungen. Da der Code zu nativem Code kompiliert wird, ist kein Zeitaufwand für die Kompilierung zur Laufzeit erforderlich.

2. Reduzieren Sie die Anwendungsassembly. Wenn eine Assembly von mehreren Prozessen gleichzeitig geladen wird, kompiliert NGen.exe die IL zu nativem Code und speichert ihn in einer separaten Datei. Auf diese Weise kann es durch „Speicherzuordnung“ mehreren Prozessen gleichzeitig zugeordnet werden, um den Code gemeinsam zu nutzen und zu vermeiden, dass jeder Prozess eine Kopie des Codes hat.

Führen Sie das Eingabeaufforderungsprogramm von Visual Studio 2008 (2005, 2010) erneut aus

Führen Sie den folgenden Befehl aus: ngen install Hello.exe:

Detaillierte Erklärung von Hello World in C#, das ohne IDE geschrieben werden kann (Bild) 

Nachdem der Befehl abgeschlossen ist (auf meinem Rechner dauert es etwa 10 Sekunden, er wird erst abgeschlossen, wenn der Befehl erneut eingegeben werden kann), führen Sie Hello.exe aus und Sie werden feststellen, dass Hello World sofort und ohne Verzögerung ausgedruckt werden kann.

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung von Hello World in C#, das ohne IDE geschrieben werden kann (Bild). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage