1. Was ist .NET Framework
Das sogenannte .NET FrameWork ist eine Plattform und dient der betriebssystemübergreifenden Programmierung. Es enthält viele Module, z. B. Windows-Anwendungskomponenten, Webentwicklungsmodule usw. Verschiedene Betriebssysteme unterstützen einige dieser Module entsprechend ihren eigenen Eigenschaften. NET Framework ist eine Programmierplattform, die von einer virtuellen Maschine ausgeführt wird. Es basiert auf der Common Language Runtime und unterstützt die Entwicklung mehrerer Sprachen (C#, VB.NET, C++ usw.). Kann Desktop-Anwendungen (WinForm, WPF, SilverLight, Office) und Webanwendungen (Asp.NET, ASP.NET) entwickeln
MVC, SilverLight), Windows-Dienst und mobile eingebettete Entwicklung. Derzeit häufig verwendete Versionen sind: 2.0, 3.0, 3.5, 4.0;
2. Mehrere Konzepte in .NET
(1), CLR-Konzept?
Details: CLR ist die Common Language Runtime (Common Language Runtime) und ist wie die Java Virtual Machine für die Ressourcenverwaltung (Speicherzuweisung und Garbage Collection) verantwortlich zugrunde liegende Betriebssystem notwendige Trennung.
(2) Was sind die Vorteile von verwaltetem Code?
Details: http://www.php.cn/
(3) Was ist die wahre Bedeutung und Manifestation der Sprachinteroperabilität?
Details: Eine in einer Sprache geschriebene Klasse sollte in der Lage sein, von einer in einer anderen Sprache geschriebenen Klasse zu erben.
Eine Klasse kann Instanzen einer anderen Klasse enthalten, unabhängig davon, in welcher Sprache sie geschrieben sind. Ein Objekt sollte dies tun in der Lage sein, Methoden von in anderen Sprachen geschriebenen Objekten direkt aufzurufen
Objekte (oder Objektreferenzen) sollten zwischen Methoden übergeben werden
Beim Aufrufen von Methoden zwischen verschiedenen Sprachen sollten diese im Debugger zum Debuggen verwendet werden können Aufrufe dieser Methoden, also Debugging-Codes
in verschiedenen Sprachen geschrieben
(4) Wie läuft der Programmkompilierungsprozess in .NET ab?
Details: http://www.php.cn/
(5) Was sind die Hauptmerkmale von Zwischensprachen?
kann in Echtzeit von verschiedenen Compilern kompiliert und auf unterschiedlichen Strukturen ausgeführt werden, wodurch Sprachstreitigkeiten vermieden werden. Mittelstufe oder Hochsprache.
(6) Was ist der konzeptionelle Unterschied zwischen dynamischer Sprache und statischer Sprache, stark typisierter Definitionssprache und schwach typisierter Definitionssprache?
Dynamisch typisierte Sprache: eine Sprache, die Datentypen während der Laufzeit überprüft. Statisch typisierte Sprache: Datentypen werden während der Kompilierung überprüft.
Stark typisierte Definitionssprache: eine Sprache, die die Definition von Datentypen erzwingt.
Schwach typisierte Definitionssprache: eine Sprache, in der Datentypen ignoriert werden können. Es handelt sich um das Gegenteil einer stark typisierten Definitionssprache, bei der einer Variablen Werte unterschiedlicher Datentypen zugewiesen werden können.
(7) Kompilierter und interpretierter Typ (siehe Blog)
Schauen wir uns zunächst den kompilierten Typ an. Tatsächlich ist er dasselbe wie die Assemblersprache: Es gibt auch ein verantwortliches Programm Zur Übersetzung wird unser Quellcode konvertiert, um entsprechenden ausführbaren Code zu generieren. Um es professioneller auszudrücken: Dieser Vorgang wird als Kompilierung bezeichnet, und das für die Kompilierung verantwortliche Programm wird natürlich als Compiler bezeichnet. Wenn der von uns geschriebene Programmcode in einer Quelldatei enthalten ist, wird normalerweise direkt nach der Kompilierung eine ausführbare Datei generiert, die wir direkt ausführen können. Bei einem komplexeren Projekt verteilen wir den Code jedoch zur Erleichterung der Verwaltung normalerweise auf verschiedene Quelldateien und organisieren ihn in verschiedenen Modulen. Zu diesem Zeitpunkt wird beim Kompilieren jeder Datei eine Objektdatei anstelle der zuvor erwähnten ausführbaren Datei generiert. Im Allgemeinen entspricht die Kompilierung einer Quelldatei einer Zieldatei. Der Inhalt dieser Zieldateien ist grundsätzlich ausführbarer Code, da es sich jedoch nur um das gesamte Projekt handelt
Teil, daher können wir es noch nicht direkt ausführen. Nachdem alle Quelldateien kompiliert wurden, können wir diese halbfertigen Zieldateien schließlich in eine ausführbare Datei „packen“. Diese Arbeit wird von einem anderen Programm abgeschlossen, da dieser Prozess den ausführbaren Code zu umfassen scheint Daher wird es auch als Link bezeichnet, und das für die Verknüpfung verantwortliche Programm heißt ... es wird als Linker bezeichnet. Neben der Verknüpfung von Zieldateien kann der Linker auch über verschiedene Ressourcen wie Symboldateien, Sounddateien usw. verfügen und ist auch für die Entfernung redundanter doppelter Codes zwischen Zieldateien verantwortlich. Nachdem der Link abgeschlossen ist, können wir im Allgemeinen die gewünschte ausführbare Datei erhalten. Sehen Sie sich den Erklärungstyp noch einmal an. „Zusammenstellung“ und „Interpretation“ bedeuten zwar beide „Übersetzung“, der Unterschied liegt jedoch im Zeitpunkt der Übersetzung. Beispiel: Wenn Sie planen, ein ausländisches Buch zu lesen und die Fremdsprache nicht beherrschen, können Sie einen Übersetzer finden und ihm genügend Zeit geben, das gesamte Buch von Anfang bis Ende zu übersetzen und dann das Buch in die Muttersprache zu übersetzen Sie erhalten die entsprechende Version zum Lesen; Sie können aber auch sofort diesen Übersetzer bitten, Ihnen beim Lesen zu helfen, und ihn Satz für Satz übersetzen lassen. Wenn Sie zu einem bestimmten Kapitel zurückkehren möchten, muss er es übersetzen Du schon wieder.
Von den beiden Methoden entspricht die erstere dem gerade erwähnten kompilierten Typ: den gesamten Code auf einmal in Maschinensprache umwandeln und ihn dann in eine ausführbare Datei schreiben, und die zweite entspricht dem interpretierten Typ, über den wir sprechen: einfach Bevor das Programm ausgeführt wird, gibt es nur ein Quellprogramm, aber kein ausführbares Programm. Jedes Mal, wenn das Programm eine bestimmte Anweisung des Quellprogramms ausführt, gibt es ein Shell-Programm namens Interpreter, das den Quellcode zur Ausführung in Binärcode umwandelt. Kurz gesagt, es bedeutet ständige Interpretation, Ausführung, Interpretation, Ausführung ... Daher sind interpretierte Programme untrennbar mit interpretierenden Programmen verbunden. Beispielsweise ist das frühe BASIC eine klassisch interpretierte Sprache. Um ein BASIC-Programm auszuführen, müssen Sie die BASIC-Umgebung aufrufen und dann die Programmquelldatei laden und ausführen. Da bei einem interpretierten Programm das Programm immer in Form eines Quellcodes vorliegt, ist die Transplantation nahezu kein Problem, sofern ein entsprechender Interpreter vorhanden ist. Obwohl auch der Quellcode kompilierter Programme übertragen werden kann, ist die Voraussetzung, dass diese für verschiedene Systeme separat kompiliert werden müssen.
Bei komplexen Projekten ist dies tatsächlich eine sehr zeitaufwändige Aufgabe, und es ist sehr wahrscheinlich, dass der Quellcode noch in einigen Details geändert werden muss. Darüber hinaus sparen interpretierte Programme den Kompilierungsschritt und sind sehr praktisch zum Ändern und Debuggen. Sie können im Gegensatz zu kompilierten Programmen nicht geduldig auf den langen Kompilierungs-, Verknüpfungs- und Kompilierungsprozess warten jedes Mal, wenn Sie kleine Änderungen vornehmen. Allerdings hat alles Vor- und Nachteile. Da interpretierte Programme den Kompilierungsprozess in den Ausführungsprozess einbeziehen, ist es nicht verwunderlich, dass interpretierte Programme viel langsamer sind.
Kompilierter Typ und interpretierter Typ haben beide Vor- und Nachteile. Ersteres bietet eine schnelle Programmausführungsgeschwindigkeit und geringere Systemanforderungen unter den gleichen Bedingungen. Daher wird es bei der Entwicklung von Betriebssystemen, großen Anwendungen, Datenbanksystemen usw. wie C/C++, Pascal/Object Pascal (Delphi) verwendet. , VB und andere Basisprogramme können als kompilierte Sprachen betrachtet werden, während einige Webskripte, Serverskripte und Hilfsentwicklungsschnittstellen, wie z. B. Programme, die keine hohen Geschwindigkeitsanforderungen haben und bestimmte Anforderungen an die Kompatibilität zwischen verschiedenen Systemplattformen stellen, normalerweise verwendet werden interpretierte Sprachen wie Java und JavaScript, VBScript, Perl, Python usw.
Da kompilierte und interpretierte Sprachen jedoch ihre eigenen Vor- und Nachteile haben und gegensätzlich sind, neigen einige neue Sprachen dazu, die beiden zu kompromittieren, obwohl die Java-Sprache beispielsweise näher an den Merkmalen liegt der interpretierten Sprachen vor der Ausführung Es wurde im Voraus vorkompiliert und der generierte Code ist ein Zwischencode zwischen dem Maschinencode und dem Java-Quellcode. Bei der Ausführung wird er von der JVM (Javas virtuelle Maschinenplattform) interpretiert und ausgeführt als Dolmetscher angesehen werden). Es behält nicht nur die hohen Abstraktions- und Portabilitätseigenschaften des Quellcodes bei, sondern hat auch den größten Teil der Vorkompilierung des Quellcodes abgeschlossen, sodass es viel schneller ausgeführt wird als „rein interpretierte“ Programme. Für Sprachen wie VB6 (oder frühere Versionen) und C# generieren sie zwar oberflächlich betrachtet ausführbare .exe-Programmdateien, nach der Kompilierung von VB6 wird jedoch tatsächlich auch ein Zwischencode generiert, aber der Compiler fügt davor einen Absatz ein . Rufen Sie automatisch einen externen Anruf an
Der Code des internen Interpreters (dieser Interpreter ist unabhängig vom vom Benutzer geschriebenen Programm und wird in einer DLL-Datei des Systems gespeichert. Alle mit VB6 kompilierten ausführbaren Programme verwenden ihn), um den eigentlichen Programmkörper zu interpretieren und auszuführen. C# (und andere .net-Sprachcompiler) generieren .net-Zielcode, der tatsächlich vom .net-Interpretationssystem ausgeführt wird (genau wie JVM ist es auch eine Plattform für virtuelle Maschinen). Natürlich ist der .net-Zielcode bereits recht „low-level“ und näher an der Maschinensprache, daher wird er immer noch als kompilierte Sprache betrachtet und seine Portabilität ist nicht so leistungsfähig, wie Java behauptet, „kompiliert“ zu sein einmal, überall ausführen“. Und .net ist „einmal kodieren, überall kompilieren“. Kurz gesagt, mit der kontinuierlichen Weiterentwicklung von Designtechnologie und Hardware werden Typen zusammengestellt und interpretiert
Die Grenzen zwischen den Ansätzen verschwimmen zunehmend.
Das Obige ist die Zusammenstellung der C#-Grundkenntnisse: .NET-Kenntnisse Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!