Översikt över Common Language Runtime (CLR)

.NET tillhandahåller en körningsmiljö som kallas common language runtime som kör koden och tillhandahåller tjänster som gör utvecklingsprocessen enklare.

Kompilatorer och verktyg exponerar den vanliga språkkörningens funktioner och gör att du kan skriva kod som drar nytta av den hanterade körningsmiljön. Kod som du utvecklar med en språkkompilator som riktar sig mot körningen kallas hanterad kod. Hanterad kod drar nytta av funktioner som integrering mellan språk, undantagshantering mellan språk, förbättrad säkerhet, versionshantering och distributionsstöd, en förenklad modell för komponentinteraktion samt felsöknings- och profileringstjänster.

Kommentar

Kompilatorer och verktyg kan producera utdata som den vanliga språkkörningen kan använda eftersom typsystemet, formatet för metadata och körningsmiljön (det virtuella körningssystemet) alla definieras av en offentlig standard, ECMA Common Language Infrastructure-specifikationen. Mer information finns i ECMA C# och Common Language Infrastructure Specifications ( EcMA C# och Common Language Infrastructure Specifications).

För att göra det möjligt för körningen att tillhandahålla tjänster till hanterad kod måste språkkompilatorer generera metadata som beskriver typerna, medlemmarna och referenserna i koden. Metadata lagras med koden. varje inläsbar PE-fil (Common Language Runtime Portable Executable) innehåller metadata. Körningen använder metadata för att hitta och läsa in klasser, lägga ut instanser i minnet, lösa metodanrop, generera intern kod, framtvinga säkerhet och ange kontextgränser för körning.

Körningen hanterar automatiskt objektlayouten och hanterar referenser till objekt och släpper dem när de inte längre används. Objekt vars livslängd hanteras på det här sättet kallas hanterade data. Skräpinsamling eliminerar minnesläckor och andra vanliga programmeringsfel. Om koden hanteras kan du använda hanterade, ohanterade eller både hanterade och ohanterade data i .NET-programmet. Eftersom språkkompilatorer tillhandahåller sina egna typer, till exempel primitiva typer, kanske du inte alltid vet eller behöver veta om dina data hanteras.

Den vanliga språkkörningen gör det enkelt att utforma komponenter och program vars objekt interagerar mellan olika språk. Objekt skrivna på olika språk kan kommunicera med varandra och deras beteenden kan integreras noggrant. Du kan till exempel definiera en klass och sedan använda ett annat språk för att härleda en klass från den ursprungliga klassen eller anropa en metod i den ursprungliga klassen. Du kan också skicka en instans av en klass till en metod för en klass som skrivits på ett annat språk. Den här integreringen mellan språk är möjlig eftersom språkkompilatorer och verktyg som är avsedda för körningen använder ett vanligt typsystem som definieras av körningen. De följer körningsreglerna för att definiera nya typer och för att skapa, använda, bevara och binda till typer.

Som en del av sina metadata har alla hanterade komponenter information om de komponenter och resurser som de skapades mot. Körningen använder den här informationen för att säkerställa att komponenten eller programmet har de angivna versionerna av allt som behövs, vilket gör att koden är mindre sannolik att brytas på grund av något ouppfyllt beroende. Registreringsinformation och tillståndsdata lagras inte längre i registret, där de kan vara svåra att upprätta och underhålla. I stället lagras information om de typer som du definierar och deras beroenden med koden som metadata. På så sätt är uppgiften med komponentreplikering och borttagning mindre komplicerad.

Språkkompilatorer och verktyg exponerar körningens funktioner på sätt som är avsedda att vara användbara och intuitiva för utvecklare. Vissa funktioner i körningen kan vara mer märkbara i en miljö än i en annan. Hur du upplever körningen beror på vilka språkkompilatorer eller verktyg du använder. Om du till exempel är visual basic-utvecklare kanske du märker att visual basic-språket har fler objektorienterade funktioner än tidigare med den vanliga språkkörningen. Körningen ger följande fördelar:

  • Prestandaförbättringar.

  • Möjligheten att enkelt använda komponenter som utvecklats på andra språk.

  • Utökningsbara typer som tillhandahålls av ett klassbibliotek.

  • Språkfunktioner som arv, gränssnitt och överlagring för objektorienterad programmering.

  • Stöd för explicit fri trådning som gör det möjligt att skapa flertrådade och skalbara program.

  • Stöd för strukturerad undantagshantering.

  • Stöd för anpassade attribut.

  • Skräpinsamling.

  • Användning av ombud i stället för funktionspekare för ökad typsäkerhet. Mer information om ombud finns i Common Type System.

CLR-versioner

.NET Core- och .NET 5+-versioner har en enda produktversion, det vill sa att det inte finns någon separat CLR-version. En lista över .NET Core-versioner finns i Ladda ned .NET Core.

Versionsnumret för .NET Framework motsvarar dock inte nödvändigtvis versionsnumret för den CLR som det innehåller. En lista över .NET Framework-versioner och deras motsvarande CLR-versioner finns i .NET Framework-versioner och beroenden.

Title Description
Hanterad körningsprocess Beskriver de steg som krävs för att dra nytta av den vanliga språkkörningen.
Automatisk minneshantering Beskriver hur skräpinsamlaren allokerar och frigör minne.
Översikt över .NET Framework Beskriver viktiga .NET Framework-begrepp, till exempel det gemensamma typsystemet, samverkan mellan språk, hanterad körning, programdomäner och sammansättningar.
Common Type System Beskriver hur typer deklareras, används och hanteras i körningen till stöd för integrering mellan språk.