Common Language Runtime (CLR)Common Language Runtime (CLR)

.NET Framework stellt eine als Common Language Runtime bezeichnete Laufzeitumgebung bereit, die Code ausführt und Dienste für die Erleichterung des Entwicklungsprozesses bereitstellt.The .NET Framework provides a run-time environment called the common language runtime, which runs the code and provides services that make the development process easier.

Compiler und Tools machen die Funktionen der Common Language Runtime verfügbar und ermöglichen das Schreiben von Code, mit dem die Vorteile dieser verwalteten Ausführungsumgebung genutzt werden können.Compilers and tools expose the common language runtime's functionality and enable you to write code that benefits from this managed execution environment. Mit einem Sprachcompiler für die Common Language Runtime entwickelter Code wird "verwalteter Code" genannt. Dieser nutzt Features wie sprachübergreifende Integration, sprachübergreifende Ausnahmebehandlung, erhöhte Sicherheit, Unterstützung bei der Versionserstellung und Bereitstellung, ein vereinfachtes Modell für die Interaktion von Komponenten sowie Debug- und Profilerstellungsdienste.Code that you develop with a language compiler that targets the runtime is called managed code; it benefits from features such as cross-language integration, cross-language exception handling, enhanced security, versioning and deployment support, a simplified model for component interaction, and debugging and profiling services.

Hinweis

Compiler und Tools sind in der Lage, eine von der Common Language Runtime nutzbare Ausgabe zu erzeugen, da sowohl das Typsystem, das Format der Metadaten als auch die Laufzeitumgebung (das virtuelle Ausführungssystem) von einem öffentlichen Standard definiert werden, dem ECMA-Standard für die Common Language Infrastructure.Compilers and tools are able to produce output that the common language runtime can consume because the type system, the format of metadata, and the runtime environment (the virtual execution system) are all defined by a public standard, the ECMA Common Language Infrastructure specification. Weitere Informationen finden Sie unter ECMA C# und Common Language Infrastructure Standards.For more information, see ECMA C# and Common Language Infrastructure Specifications.

Damit die Common Language Runtime Dienste für verwalteten Code bereitstellen kann, müssen Sprachcompiler Metadaten ausgeben, mit denen die Typen, Member und Verweise im Code beschrieben werden.To enable the runtime to provide services to managed code, language compilers must emit metadata that describes the types, members, and references in your code. Metadata werden gemeinsam mit dem Code gespeichert. Jede PE (Portable Executable)-Datei der Common Language Runtime, die geladen werden kann, enthält Metadaten.Metadata is stored with the code; every loadable common language runtime portable executable (PE) file contains metadata. Die Laufzeit verwendet Metadaten zum Suchen und Laden von Klassen, Anordnen von Instanzen im Speicher, Auflösen von Methodenaufrufen, Generieren von systemeigenem Code, Erzwingen von Sicherheit und zum Festlegen von Begrenzungen im Laufzeitkontext.The runtime uses metadata to locate and load classes, lay out instances in memory, resolve method invocations, generate native code, enforce security, and set run-time context boundaries.

Die Laufzeit behandelt automatisch das Objektlayout und verwaltet Verweise auf Objekte. Diese werden nach Verwendung freigegeben.The runtime automatically handles object layout and manages references to objects, releasing them when they are no longer being used. Objekte, deren Lebensdauer auf diese Weise verwaltet wird, werden als verwaltete Daten bezeichnet.Objects whose lifetimes are managed in this way are called managed data. Durch die Garbage Collection werden Speicherverluste sowie einige weitere verbreitete Programmierfehler vermieden.Garbage collection eliminates memory leaks as well as some other common programming errors. Wenn verwalteter Code verwendet wird, können in einer .NET Framework-Anwendung verwaltete Daten, nicht verwaltete Daten oder beides gleichzeitig verwendet werden.If your code is managed, you can use managed data, unmanaged data, or both managed and unmanaged data in your .NET Framework application. Da Sprachcompiler ihre eigenen Typen, z. B. primitive Typen, bereitstellen, wissen Sie möglicherweise nicht (oder müssen nicht wissen), ob die Daten verwaltet werden.Because language compilers supply their own types, such as primitive types, you might not always know (or need to know) whether your data is being managed.

Die Common Language Runtime erleichtert das Entwerfen von Komponenten und Anwendungen, deren Objekte sprachübergreifend interagieren.The common language runtime makes it easy to design components and applications whose objects interact across languages. In unterschiedlichen Sprachen geschriebene Objekte können miteinander kommunizieren. Ihr Verhalten kann in hohem Maße integriert werden.Objects written in different languages can communicate with each other, and their behaviors can be tightly integrated. Sie können z. B. eine Klasse definieren und dann in einer anderen Sprache eine Klasse von der ursprünglichen Klasse ableiten oder eine Methode für diese aufrufen.For example, you can define a class and then use a different language to derive a class from your original class or call a method on the original class. Sie können außerdem eine Instanz einer Klasse an die in einer anderen Sprache geschriebene Methode einer Klasse übergeben.You can also pass an instance of a class to a method of a class written in a different language. Diese sprachübergreifende Integration wird durch die Verwendung eines von der Common Language Runtime definierten allgemeinen Typsystems durch Sprachcompiler und Tools für die Common Language Runtime ermöglicht. Hierbei werden die Regeln der Common Language Runtime für die Definition neuer Typen, das Erstellen, Verwenden und Beibehalten von Typen sowie für die Typenbindung befolgt.This cross-language integration is possible because language compilers and tools that target the runtime use a common type system defined by the runtime, and they follow the runtime's rules for defining new types, as well as for creating, using, persisting, and binding to types.

Sämtliche verwalteten Komponenten enthalten als Teil der jeweiligen Metadaten Informationen über die Komponenten und Ressourcen, für die sie erstellt wurden.As part of their metadata, all managed components carry information about the components and resources they were built against. Mit diesen Informationen stellt die Common Language Runtime sicher, dass die Komponente oder Anwendung über die angegebenen Versionen aller erforderlichen Elemente verfügt. Dadurch kommt es seltener zu einer Unterbrechung der Ausführung des Codes aufgrund einer Abhängigkeit, deren Voraussetzungen nicht erfüllt sind.The runtime uses this information to ensure that your component or application has the specified versions of everything it needs, which makes your code less likely to break because of some unmet dependency. Registrierungsinformationen und Zustandsdaten werden nicht mehr in der Registrierung gespeichert, in der sie möglicherweise schwierig zu erstellen und zu verwalten sind.Registration information and state data are no longer stored in the registry where they can be difficult to establish and maintain. Stattdessen werden Informationen über die definierten Typen sowie deren Abhängigkeiten gemeinsam mit dem Code als Metadaten gespeichert, wodurch die Replikation und das Entfernen von Komponenten wesentlich vereinfacht werden.Instead, information about the types you define (and their dependencies) is stored with the code as metadata, making the tasks of component replication and removal much less complicated.

Die Funktionen der Laufzeit werden durch Sprachcompiler und Tools auf eine Weise verfügbar gemacht, dass sie von Entwicklern einfach und intuitiv verwendet werden können.Language compilers and tools expose the runtime's functionality in ways that are intended to be useful and intuitive to developers. Dies hat zur Folge, dass einige Features der Laufzeit möglicherweise in unterschiedlichen Umgebungen unterschiedlich wahrgenommen werden.This means that some features of the runtime might be more noticeable in one environment than in another. Die Wahrnehmung der Laufzeit hängt von den verwendeten Sprachcompilern und Tools ab.How you experience the runtime depends on which language compilers or tools you use. Visual Basic-Entwickler werden z. B. bemerken, dass die Sprache Visual Basic mit der Common Language Runtime über mehr zusätzliche objektorientierte Features als ohne sie verfügt.For example, if you are a Visual Basic developer, you might notice that with the common language runtime, the Visual Basic language has more object-oriented features than before. In Folgenden sind einige Vorteile der Common Language Runtime aufgeführt:The runtime provides the following benefits:

  • Leistungsverbesserungen.Performance improvements.

  • Die problemlose Verwendung in anderen Sprachen entwickelter Komponenten.The ability to easily use components developed in other languages.

  • Erweiterbare Typen, die von einer Klassenbibliothek bereitgestellt werden.Extensible types provided by a class library.

  • Neue Sprachfunktionen wie Vererbung, Schnittstellen und Überladen für objektorientiertes Programmieren.Language features such as inheritance, interfaces, and overloading for object-oriented programming.

  • Unterstützung für explizites Freethreading zum Erstellen skalierbarer Multithreadanwendungen.Support for explicit free threading that allows creation of multithreaded, scalable applications.

  • Unterstützung für strukturierte Ausnahmebehandlung.Support for structured exception handling.

  • Unterstützung für benutzerdefinierte Attribute.Support for custom attributes.

  • Garbage Collection.Garbage collection.

  • Verwendung von Delegaten anstelle von Funktionszeigern zur Verbesserung der Typsicherheit.Use of delegates instead of function pointers for increased type safety and security. Weitere Informationen zu Delegaten finden Sie unter Allgemeines Typsystem.For more information about delegates, see Common Type System.

Versionen der Common Language RuntimeVersions of the Common Language Runtime

Die Versionsnummer von .NET Framework entspricht nicht unbedingt der Versionsnummer der enthaltenen CLR.The version number of the .NET Framework doesn't necessarily correspond to the version number of the CLR it includes. Die folgende Tabelle zeigt, wie die beiden Versionsnummern zusammenhängen.The following table shows how the two version numbers correlate.

.NET Framework-Version.NET Framework version Enthält CLR-VersionIncludes CLR version
1.01.0 1.01.0
1.11.1 1.11.1
2.02.0 2.02.0
3.03.0 2.02.0
3.53.5 2.02.0
44 44
4.5 (inklusive 4.5.1 und 4.5.2)4.5 (including 4.5.1 and 4.5.2) 44
4.6 (einschließlich 4.6.1 und 4.6.2)4.6 (including 4.6.1 and 4.6.2) 44
4.7 (einschließlich 4.7.1)4.7 (including 4.7.1) 44
TitelTitle BeschreibungDescription
Der verwaltete AusführungsprozessManaged Execution Process Enthält eine Beschreibung der Schritte, die erforderlich sind, um die Vorteile der Common Language Runtime nutzen zu können.Describes the steps required to take advantage of the common language runtime.
Automatische SpeicherverwaltungAutomatic Memory Management Erläutert, wie Sie den Garbage Collector zum Belegen und Freigeben von Arbeitsspeicher verwenden können.Describes how the garbage collector allocates and releases memory.
NIB: Übersicht über .NET FrameworkNIB: Overview of the .NET Framework Beschreibt die wichtigsten Konzepte von .NET Framework, z. B. das allgemeine Typsystem, sprachübergreifende Interoperabilität, verwaltete Ausführung, Anwendungsdomänen und Assemblys.Describes key .NET Framework concepts such as the common type system, cross-language interoperability, managed execution, application domains, and assemblies.
Allgemeines TypsystemCommon Type System Enthält eine Beschreibung der Deklaration, Verwendung und Verwaltung von Typen in der Laufzeit für die Unterstützung einer sprachübergreifenden Integration.Describes how types are declared, used, and managed in the runtime in support of cross-language integration.

Siehe auchSee Also

Versionen und AbhängigkeitenVersions and Dependencies