.NET Framework



Alla kunskaper som människor har samlat på sig under århundradena om .NET Framework finns nu tillgängliga på internet, och vi har sammanställt och ordnat dem för dig på ett så lättillgängligt sätt som möjligt. Vi vill att du snabbt och effektivt ska kunna få tillgång till allt du vill veta om .NET Framework, att din upplevelse ska vara trevlig och att du ska känna att du verkligen har hittat den information om .NET Framework som du sökte.

För att uppnå våra mål har vi ansträngt oss inte bara för att få fram den mest uppdaterade, begripliga och sanningsenliga informationen om .NET Framework, utan vi har också sett till att designen, läsbarheten, laddningshastigheten och användbarheten på sidan är så trevlig som möjligt, så att du kan fokusera på det väsentliga, att känna till alla uppgifter och all information som finns om .NET Framework, utan att behöva oroa dig för något annat, vi har redan tagit hand om det åt dig. Vi hoppas att vi har uppnått vårt syfte och att du har hittat den information du ville ha om .NET Framework. Vi välkomnar dig och uppmuntrar dig att fortsätta att njuta av att använda scientiasv.com .

.NET Framework
.NET Logo.svg
DotNet.svg
.NET Framework -komponentstack
Utvecklare Microsoft
Initial release 14 februari 2002  ( 2002-02-14 )
Slutlig utgåva
4.8.0 Bygg 3928 /25 juli 2019  ( 2019-07-25 )
Operativ system Windows 98 eller senare, Windows NT 4.0 eller senare
Plattform IA-32 , x86-64 och ARM
Efterträdare .NETTO
Typ Programvara ram
Licens Blandad; se § Licensiering
Hemsida dotnet .microsoft .com Redigera detta på Wikidata

Den .NET Framework (uttalas som " dot net" ) är en ram programvara som utvecklats av Microsoft som körs främst på Microsoft Windows . Det innehåller ett stort klassbibliotek som heter Framework Class Library (FCL) och ger språkkompatibilitet (varje språk kan använda kod skriven på andra språk) på flera programmeringsspråk . Program som skrivits för .NET Framework körs i en programvarumiljö (i motsats till en hårdvarumiljö ) med namnet Common Language Runtime (CLR). CLR är envirtuell applikationsmaskin som tillhandahåller tjänster som säkerhet, minneshantering och undantagshantering . Som sådan kallas datorkod skriven med .NET Framework " hanterad kod ". FCL och CLR utgör tillsammans .NET Framework.

FCL tillhandahåller användargränssnitt , datatillgång , databasanslutning , kryptografi , webbapplikationsutveckling , numeriska algoritmer och nätverkskommunikation . Programmerare producerar programvara genom att kombinera sin källkod med .NET Framework och andra bibliotek. Ramverket är avsett att användas av de flesta nya applikationer som skapats för Windows -plattformen. Microsoft producerar också en integrerad utvecklingsmiljö för .NET -programvara som kallas Visual Studio .

.NET Framework började som egenutvecklad programvara , även om företaget arbetade med att standardisera programvarustacken nästan omedelbart, redan innan den släpptes. Trots standardiseringsansträngningarna uttryckte utvecklare, främst de i de fria och öppen källkodsprogramvarorna , sitt obehag med de valda villkoren och utsikterna för en fri och öppen källkod, särskilt när det gäller programvarupatent . Sedan dess har Microsoft förändrat .NET-utvecklingen för att närmare följa en samtida modell av ett community-utvecklat mjukvaruprojekt, inklusive att utfärda en uppdatering av sitt patent som lovar att ta itu med problemen.

I april 2019 släppte Microsoft .NET Framework 4.8, den sista versionen av ramverket som ett eget erbjudande. Endast månatliga buggfixar för säkerhet och tillförlitlighet till den versionen har släppts sedan dess. Inga ytterligare ändringar av den versionen är planerade.

Historia

Microsoft började utveckla .NET Framework i slutet av 1990 -talet, ursprungligen under namnet Next Generation Windows Services (NGWS), som en del av .NET -strategin . I början av 2000 släpptes de första betaversionerna av .NET 1.0.

I augusti 2000 arbetade Microsoft och Intel med att standardisera Common Language Infrastructure (CLI) och C# . I december 2001 ratificerades båda Ecma International (ECMA) -standarder. International Organization for Standardization (ISO) följde i april 2003. Den nuvarande versionen av ISO -standarder är ISO/IEC 23271: 2012 och ISO/IEC 23270: 2006.

Medan Microsoft och deras partners innehar patent för CLI och C#, kräver ECMA och ISO att alla patent som är nödvändiga för implementering görs tillgängliga under " rimliga och icke-diskriminerande villkor ". Företagen gick med på att uppfylla dessa villkor och att göra patent tillgängliga royaltyfria. Detta gällde dock inte den del av .NET Framework som inte omfattas av ECMA-ISO-standarder, inklusive Windows Forms , ADO.NET och ASP.NET . Patent som Microsoft innehar inom dessa områden kan ha avskräckt icke-Microsofts implementeringar av hela ramverket.

Den 3 oktober 2007 meddelade Microsoft att källkoden för .NET Framework 3.5-bibliotek skulle bli tillgänglig under Microsoft Reference Source License (Ms-RSL). Källkodförvaret blev tillgängligt online den 16 januari 2008 och inkluderade BCL, ASP.NET, ADO.NET, Windows Forms, WPF och XML. Scott Guthrie från Microsoft lovade att LINQ-, WCF- och WF -bibliotek skulle läggas till.

Den NET Compact Framework och .NET Micro Framework varianter av .NET Framework som stöd för andra Microsoft plattformar som Windows Mobile , Windows CE och andra resursbegränsade inbäddade enheter. Silverlight gav stöd för webbläsare via plug-ins.

I november 2014 producerade Microsoft också en uppdatering av sina patentbidrag, vilket ytterligare sträcker sig utöver dess tidigare löften. Tidigare projekt som Mono existerade i ett lagligt grått område eftersom Microsofts tidigare bidrag endast gällde tekniken i "omfattade specifikationer", inklusive strikt de fjärde upplagorna var och en av ECMA-334 och ECMA-335. Det nya patentlöftet sätter dock inget tak på specifikationsversionen och omfattar till och med alla .NET runtime -tekniker som dokumenterats på MSDN som inte formellt har specificerats av ECMA -gruppen om ett projekt väljer att implementera dem. Detta gör det möjligt för Mono och andra projekt att bibehålla funktionsparitet med moderna. NET -funktioner som har introducerats sedan den fjärde upplagan publicerades utan att riskera patenttvister om implementeringen av dessa funktioner. Det nya bidraget upprätthåller dock begränsningen att varje implementering måste upprätthålla minimal överensstämmelse med de obligatoriska delarna av CLI -specifikationen.

Den 31 mars 2016 tillkännagav Microsoft vid Microsoft Build att de helt kommer att licensiera Mono under en MIT -licens även i scenarier där det tidigare behövdes en kommersiell licens. Microsoft kompletterade också sitt tidigare patentlöfte för Mono och uppgav att de inte kommer att göra gällande "tillämpliga patent" mot parter som "använder, säljer, erbjuder till försäljning, importerar eller distribuerar Mono." Det meddelades att Mono -projektet bidrog till .NET Foundation. Denna utveckling följde på förvärvet av Xamarin , som började i februari 2016 och slutfördes den 18 mars 2016.

Microsofts pressmeddelande belyser att åtagandet över flera plattformar nu möjliggör en helt öppen källkod, modern .NET-stack på serversidan. Microsoft släppte källkoden för WPF, Windows Forms och WinUI den 4 december 2018.

Arkitektur

Gemensam språkinfrastruktur

Common Language Infrastructure (CLI) tillhandahåller en språkneutral plattform för applikationsutveckling och körning. Genom att implementera kärnaspekterna av .NET Framework inom ramen för CLI kommer dessa funktioner inte att knytas till ett språk utan är tillgängliga på de många språk som stöds av ramverket.

Common Language Runtime

.NET Framework innehåller Common Language Runtime (CLR). Det fungerar som körmotor för .NET Framework och erbjuder många tjänster som minneshantering , typsäkerhet , undantagshantering , skräpinsamling , säkerhet och trådhantering . Alla program som skrivits för .NET Framework körs av CLR.

Program som skrivits för .NET Framework sammanställs till Common Intermediate Language Code (CIL), i motsats till att de direkt kompileras till maskinkod . Under körningen förvandlar en arkitekturspecifik just-in-time-kompilator (JIT) CIL-koden till maskinkod.

Församlingar

Kompilerad CIL -kod lagras i CLI -enheter . I enlighet med specifikationen lagras sammansättningar i filformatet Portable Executable (PE), vanligt på Windows-plattformen för alla dynamiska länkbibliotek (DLL) och körbara EXE- filer. Varje sammansättning består av en eller flera filer, varav en måste innehålla ett manifest som innehåller metadata för sammansättningen. Det fullständiga namnet på en sammansättning (får inte förväxlas med filnamnet på disken) innehåller dess enkla textnamn, versionsnummer, kultur och offentliga nyckeltoken . Samlingar betraktas som likvärdiga om de delar samma fullständiga namn.

En privat nyckel kan också användas av skaparen av församlingen för stark namngivning . Den offentliga nyckeltoken identifierar vilken privat nyckel en församling är signerad med. Endast skaparen av nyckelparet (vanligtvis personen som signerar församlingen) kan signera sammansättningar som har samma starka namn som en tidigare version, eftersom skaparen har den privata nyckeln. Stark namngivning krävs för att lägga till sammansättningar i Global Assembly Cache .

Från och med Visual Studio 2015 möjliggör .NET Native -kompileringsteknik kompilering av .NET -kod för Universal Windows Platform -appar direkt till maskinkod snarare än CIL -kod, men appen måste skrivas antingen i C# eller Visual Basic.NET.

Klassbibliotek

.NET Framework inkluderar en implementering av CLI -grundläggande standardbibliotek . .NET Framework Class Library (FCL) är organiserat i en hierarki av namnområden . De flesta av de inbyggda applikationsprogrammeringsgränssnitten (API: er) är en del av antingen System.*eller Microsoft.*namnområden. Dessa klassbibliotek implementerar många vanliga funktioner, såsom filläsning och skrivning, grafisk återgivning, databasinteraktion och XML -dokumentmanipulering. Klassbiblioteken är tillgängliga för alla CLI -kompatibla språk . FCL implementerar CLI Base Class Library (BCL) och andra klassbibliotek - vissa är specificerade av CLI och andra är Microsoftspecifika.

BCL innehåller en liten delmängd av hela klassbiblioteket och är kärnuppsättningen av klasser som fungerar som CLR: s grundläggande API . För .NET Framework anses de flesta klasserna vara en del av BCL i mscorlib.dll, System.dlloch System.Core.dll. BCL -klasser finns i .NET Framework och dess alternativa implementeringar inklusive .NET Compact Framework , Microsoft Silverlight , .NET Core och Mono .

FCL hänvisar till hela klassbiblioteket som levereras med .NET Framework. Den innehåller en utökad uppsättning bibliotek, inklusive BCL, Windows Forms , ASP.NET och Windows Presentation Foundation (WPF) men även tillägg till basklassbiblioteken ADO.NET , Language Integrated Query (LINQ), Windows Communication Foundation (WCF) och Workflow Foundation (WF). FCL har en mycket större omfattning än standardbibliotek för språk som C ++ och kan jämföras med standardbibliotek i Java .

Med introduktionen av alternativa implementeringar (t.ex. Silverlight) introducerade Microsoft konceptet Portable Class Libraries (PCL) så att ett förbrukande bibliotek kan köras på mer än en plattform. Med den fortsatta spridningen av .NET -plattformar misslyckades PCL -tillvägagångssättet (PCL är definierade korsningar mellan API -ytan mellan två eller flera plattformar). Som nästa evolutionära steg i PCL skapades .NET Standard Library retroaktivt baserat på de System.Runtime.dllbaserade API: erna som finns i UWP och Silverlight. Nya .NET-plattformar uppmuntras att implementera en version av standardbiblioteket så att de kan återanvända befintliga tredjepartsbibliotek för att köra utan nya versioner av dem. .NET Standardbibliotek möjliggör en oberoende utveckling av biblioteket och app -modelllagren inom .NET -arkitekturen.

NuGet är pakethanteraren för alla .NET -plattformar. Det används för att hämta tredjepartsbibliotek till ett .NET-projekt med ett globalt biblioteksflöde på NuGet.org. Privata flöden kan underhållas separat, t.ex. av en build -server eller en filsystemkatalog.

C ++/CLI

Microsoft introducerade C ++/CLI i Visual Studio 2005, som är ett språk och ett sätt att kompilera Visual C ++ - program för att köras inom .NET Framework. Vissa delar av C ++ - programmet körs fortfarande inom en okontrollerad Visual C ++ - körtid, medan speciellt modifierade delar översätts till CIL -kod och körs med .NET Framework CLR .

Enheter som sammanställts med hjälp av C ++/CLI-kompilatorn kallas sammansättningar för blandat läge, eftersom de innehåller inbyggd och hanterad kod i samma DLL. Sådana sammansättningar är mer komplexa för att omvända, eftersom .NET -dekompilatorer som .NET Reflector endast avslöjar den hanterade koden.

Designprincip

Interoperabilitet

Eftersom datorsystem vanligtvis kräver interaktion mellan nyare och äldre applikationer ger .NET Framework medel för att komma åt funktioner som implementeras i nyare och äldre program som körs utanför .NET -miljö. Tillgång till komponenter för komponentobjektmodeller (COM) finns i System.Runtime.InteropServicesoch System.EnterpriseServicesnamnområden för ramverket. Tillgång till andra funktioner sker via plattformsinvokationstjänster (P/Åkalla). Åtkomst till .NET -funktioner från inbyggda applikationer sker via omvänd P/Invoke -funktion.

Språk oberoende

.NET Framework introducerar ett Common Type System (CTS) som definierar alla möjliga datatyper och programmeringskonstruktioner som stöds av CLR och hur de kan interagera eller inte överensstämma med CLI -specifikationen. På grund av den här funktionen stöder .NET Framework utbyte av typer och objektinstanser mellan bibliotek och applikationer som skrivs med valfritt. NET -språk .

Typ säkerhet

CTS och CLR som används i .NET Framework tillämpar också typsäkerhet . Detta förhindrar dåligt definierade kast, fel metodinkallelser och problem med minnesstorlek vid åtkomst till ett objekt. Detta gör också att de flesta CLI -språk statiskt skrivs in (med eller utan typinferens ). Från och med .NET Framework 4.0 utökade dock Dynamic Language Runtime CLR, så att dynamiskt skrivna språk kunde implementeras ovanpå CLI.

Bärbarhet

Även om Microsoft aldrig har implementerat hela ramverket på något system utom Microsoft Windows, har det konstruerat ramverket för att vara plattformsoberoende, och implementeringar är tillgängliga för andra operativsystem (se Silverlight och § Alternativa implementeringar ). Microsoft lämnade in specifikationerna för CLI (som inkluderar bibliotek i kärnklassen, CTS och CIL), C# och C ++/CLI till både Ecma International (ECMA) och International Organization for Standardization (ISO), vilket gör dem tillgängliga som officiella standarder. Detta gör det möjligt för tredje part att skapa kompatibla implementeringar av ramverket och dess språk på andra plattformar.

säkerhet

.NET Framework har sin egen säkerhetsmekanism med två allmänna funktioner: Code Access Security (CAS) och validering och verifiering. CAS är baserat på bevis som är associerade med en specifik sammansättning. Normalt är beviset källan till enheten (oavsett om den är installerad på den lokala datorn eller har laddats ner från Internet). CAS använder bevis för att bestämma de behörigheter som ges till koden. Annan kod kan kräva att telefonkoden ges en angiven behörighet. Kravet får CLR att utföra en samtalsstapelpromenad: varje sammansättning av varje metod i samtalsstacken kontrolleras för den nödvändiga behörigheten; om någon församling inte beviljas tillstånd kastas ett säkerhetsundantag.

Hanterad CIL- bytekod är lättare att bakomkonstruera än inbyggd kod, såvida den inte är skymd . .NET- dekompilatorprogram gör det möjligt för utvecklare utan omvända färdigheter att se källkoden bakom obefuskerade .NET-sammansättningar. Däremot är appar som har sammanställts med inbyggd maskinkod mycket svårare att omvända, och källkoden produceras nästan aldrig framgångsrikt, främst på grund av kompilatoroptimeringar och bristande reflektion . Detta skapar oro i näringslivet över den eventuella förlusten av affärshemligheter och kringgående av licenskontrollmekanismer. För att mildra detta har Microsoft inkluderat Dotfuscator Community Edition med Visual Studio .NET sedan 2002. Tredjeparts obfuscation-verktyg finns också tillgängliga från leverantörer som VMware , Vi Labs , Turbo och Red Gate Software . Krypteringsverktyg på metodnivå för .NET-kod är tillgängliga från leverantörer som SafeNet .

Minneshantering

CLR befriar utvecklaren från bördan att hantera minne (allokerar och frigör när det är klart); den hanterar minneshantering själv genom att upptäcka när minnet säkert kan frigöras. Instantiationer av .NET -typer (objekt) tilldelas från den hanterade högen; en pool av minne som hanteras av CLR. Så länge det finns en referens till ett objekt, som antingen kan vara direkt eller via en graf över objekt, anses objektet vara i bruk. När det inte finns någon referens till ett objekt och det inte kan nås eller användas, blir det skräp, berättigat till insamling.

.NET Framework innehåller en sopsamlare (GC) som körs regelbundet, på en separat tråd från applikationens tråd, som räknar upp alla oanvändbara objekt och återvinner det minne som tilldelats dem. Det är en icke-deterministisk, kompakterande, mark-and-sweep sopsamlare. GC körs endast när en viss mängd minne har använts eller om det finns tillräckligt med tryck för minnet på systemet. Eftersom det inte är garanterat när villkoren för att återta minne har uppnåtts är GC-körningar icke-deterministiska . Varje .NET -applikation har en uppsättning rötter, som är pekare till objekt på den hanterade högen ( hanterade objekt ). Dessa inkluderar referenser till statiska objekt, objekt definierade som lokala variabler eller metodparametrar som för närvarande omfattas och objekt som refereras till av CPU -register. När GC körs, pausar det programmet och sedan, för varje objekt som det hänvisas till i roten, räknar det upp rekursivt alla objekt som kan nås från rotobjekten och markerar dem som nåbara. Den använder CLI -metadata och reflektion för att upptäcka objekten inkapslade av ett objekt och sedan gå dem rekursivt. Den räknar sedan upp alla objekt på högen (som ursprungligen tilldelades sammanhängande) med hjälp av reflektion. Alla föremål som inte är markerade som nåbara är skräp. Detta är märkesfasen . Eftersom sopans minne inte har någon betydelse anses det vara fritt utrymme. Detta lämnar emellertid bitar av ledigt utrymme mellan föremål som ursprungligen var angränsande. Objekten komprimeras sedan för att göra ledigt utrymme på den hanterade högen sammanhängande igen. Varje referens till ett objekt ogiltigförklarad genom att flytta objektet uppdateras av GC för att återspegla den nya platsen. Ansökan återupptas efter att sophämtningen har avslutats. Den senaste versionen av .NET framework använder samtidig skräpsamling tillsammans med användarkod, vilket gör pauser omöjliga att märka, eftersom det görs i bakgrunden.

Sopsamlaren som används av .NET Framework är också generationsmässig . Objekt tilldelas en generation . Nyskapade objekt är märkta med Generation 0 . Föremål som överlever en sopsamling är märkta med generation 1 . Generation 1 -objekt som överlever en annan samling är Generation 2 . Ramverket använder upp till Generation 2 -objekt. Föremål av högre generation är sopor som samlas mindre ofta än objekt av lägre generation. Detta ökar effektiviteten för sophämtning, eftersom äldre föremål tenderar att ha längre livslängd än nyare föremål. Genom att ignorera äldre objekt i de flesta insamlingskörningar behövs färre kontroller och komprimeringsåtgärder totalt.

Prestanda

När en applikation startas första gången, .NET Framework sammanställer CIL-koden till körbar kod med hjälp av just-in-time-kompilatorn och cachar det körbara programmet i .NET Native Image Cache. På grund av cachning startar applikationen snabbare för efterföljande lanseringar, även om den första lanseringen vanligtvis är långsammare. För att påskynda den första lanseringen kan utvecklare använda verktyget Native Image Generator för att manuellt i förväg kompilera och cacha alla .NET-program.

Sopsamlaren, som är integrerad i miljön, kan införa oförutsedda förseningar i utförandet som utvecklaren har liten direkt kontroll över. "I stora applikationer kan antalet föremål som sophämtaren behöver arbeta med bli mycket stort, vilket innebär att det kan ta mycket lång tid att besöka och ordna om dem alla."

.NET Framework ger stöd för att ringa Streaming SIMD -tillägg (SSE) via hanterad kod från april 2014 i Visual Studio 2013 Update 2. Mono har dock tillhandahållit stöd för SIMD -tillägg från och med version 2.2 inom Mono.Simd -namnutrymmet 2009. Monos ledning utvecklare Miguel de Icaza har uttryckt hopp om att detta SIMD -stöd kommer att antas av CLR: s ECMA -standard. Strömmande SIMD -tillägg har varit tillgängliga i x86 -processorer sedan introduktionen av Pentium III . Vissa andra arkitekturer som ARM och MIPS har också SIMD -tillägg. Om CPU: n saknar stöd för dessa tillägg simuleras instruktionerna i programvara.

Alternativa implementeringar

.NET Framework var den dominerande implementeringen av .NET -teknologier fram till .NET . Andra implementeringar för delar av ramverket finns. Även om körtidsmotorn beskrivs med en ECMA-ISO-specifikation, kan andra implementeringar av den belastas av patentfrågor . ISO -standarder kan innehålla ansvarsfriskrivningen, "Uppmärksamheten riktas mot att vissa av elementen i detta dokument kan vara föremål för patenträttigheter. ISO ska inte hållas ansvarigt för att identifiera några eller alla sådana patenträttigheter." Det är svårare att utveckla alternativ till FCL, som inte beskrivs av en öppen standard och kan omfattas av upphovsrättsbegränsningar. Delar av FCL har också Windows-specifika funktioner och beteende, så implementering på plattformar som inte är Windows kan vara problematisk.

Några alternativa implementeringar av delar av ramverket listas här.

  • .NET Micro Framework är en .NET-plattform för extremt resursbegränsade enheter. Den innehåller en liten version av CLR och stöder utveckling i C# (även om vissa utvecklare kunde använda VB.NET , om än med en mängd hackning och med begränsade funktioner) och felsökning (i en emulator eller på hårdvara), båda med Microsoft Visual Studio . Den har också en delmängd av .NET Framework Class Library (cirka 70 klasser med cirka 420 metoder), ett GUI -ramverk löst baserat på WPF och ytterligare bibliotek som är specifika för inbäddade applikationer.
  • Mono är en implementering av CLI och FCL och ger ytterligare funktioner. Den är licensierad som gratis programvara under MIT -licensen . Den innehåller stöd för ASP.NET-, ADO.NET- och Windows Forms -bibliotek för ett brett utbud av arkitekturer och operativsystem. Den innehåller också C# och VB.NET kompilatorer.
  • Portable.NET (del av DotGNU ) tillhandahåller implementering av CLI, delar av FCL och en C# -kompilator. Den stöder en mängd olika processorer och operativsystem. Projektet avbröts, med den senaste stabila versionen 2009.
  • Microsoft Shared Source Common Language Infrastructure är en icke-fri implementering av CLR. Den senaste versionen körs dock endast på Windows XP SP2 och har inte uppdaterats sedan 2006. Därför innehåller den inte alla funktioner i version 2.0 av .NET Framework.
  • CrossNet är en implementering av CLI och delar av FCL. Det är gratis programvara som använder en MIT -licens med öppen källkod .

Licensiering

Microsofts hanterade kodramar och deras komponenter licensieras enligt följande:

Komponent Licens
.NET Framework (omfördelningsbart paket) Egen programvara
Referens källkod för .NET Framework 4.5 och tidigare Microsoft-referenslicens (MS-RSL)
Referenskällkod för .NET Framework 4.6 MIT -licens
Mono MIT -licens
.NET (tidigare. NET Core)
CoreFX, CoreCLR och CLI
MIT -licens
.NET Micro Framework Apache -licens 2.0
.NET Compiler Platform (kodnamnet "Roslyn") MIT -licens
ASP.NET MVC , webb -API och webbsidor ( rakhyvel ) Apache -licens 2.0
ASP.NET Core Apache -licens 2.0
ASP.NET Ajax Control Toolkit BSD -licens
ASP.NET SignalR Apache -licens 2.0
Entity Framework Apache -licens 2.0
NuGet Apache -licens 2.0

Se även

Anteckningar

Referenser

externa länkar

Opiniones de nuestros usuarios

Ulla Sundin

Det var ett tag sedan jag såg en artikel om _variabel skriven på ett så didaktiskt sätt. Jag gillar det.

Nils Marklund

Det stämmer. Ger nödvändig information om .NET Framework.

Mari Forsberg

Jag vet inte hur jag kom till den här .NET Framework-artikeln, men jag gillade den verkligen.