De geschiedenis van C#
Dit artikel bevat een geschiedenis van elke belangrijke versie van de C#-taal. Het C#-team blijft innoveren en nieuwe functies toevoegen. Gedetailleerde status van taalfuncties, inclusief functies die in aanmerking komen voor toekomstige releases, vindt u in de dotnet-/roslyn-opslagplaats op GitHub.
Belangrijk
De C#-taal is afhankelijk van typen en methoden in wat de C#-specificatie definieert als een standaardbibliotheek voor sommige functies. Het .NET-platform levert deze typen en methoden in een aantal pakketten. Een voorbeeld hiervan is het verwerken van uitzonderingen. Elke throw
instructie of expressie wordt gecontroleerd om ervoor te zorgen dat het object dat wordt gegenereerd, wordt afgeleid van Exception. Op dezelfde manier wordt elk catch
gecontroleerd om ervoor te zorgen dat het type dat wordt gevangen, wordt afgeleid van Exception. Elke versie kan nieuwe vereisten toevoegen. Als u de nieuwste taalfuncties in oudere omgevingen wilt gebruiken, moet u mogelijk specifieke bibliotheken installeren. Deze afhankelijkheden worden beschreven op de pagina voor elke specifieke versie. Meer informatie over de relaties tussen taal en bibliotheek voor achtergrondinformatie over deze afhankelijkheid.
C#-versie 12
Uitgebracht in november 2023
De volgende functies zijn toegevoegd in C# 12:
- Primaire constructors: u kunt primaire constructors maken in een of
struct
meerclass
typen. - Verzamelingsexpressies : een nieuwe syntaxis voor het opgeven van verzamelingsexpressies, inclusief het verspreide element (
..e
), om een verzameling uit te vouwen. - Inlinematrices : met inlinematrices kunt u een matrix met vaste grootte in een
struct
type maken. - Optionele parameters in lambda-expressies : u kunt standaardwaarden definiëren voor parameters in lambda-expressies.
ref readonly
Parameters -ref readonly
maken meer duidelijkheid mogelijk voor API's die mogelijk parameters ofin
parameters gebruikenref
.- Alias elk type : u kunt de
using
aliasrichtlijn gebruiken om elk type te aliasen, niet alleen benoemde typen. - Experimenteel kenmerk : geef een experimentele functie aan.
En Interceptors- is uitgebracht als preview-functie.
Over het algemeen biedt C# 12 nieuwe functies waarmee u productiever C#-code kunt schrijven. De syntaxis die u al wist, is op meer plaatsen beschikbaar. Andere syntaxis maakt consistentie mogelijk voor gerelateerde concepten.
C#-versie 11
Uitgebracht in november 2022
De volgende functies zijn toegevoegd in C# 11:
- Letterlijke tekenreeksen van onbewerkte tekenreeks
- Algemene ondersteuning voor wiskunde
- Algemene kenmerken
- Letterlijke tekenreeksen van UTF-8
- Nieuwe regels in tekenreeksinterpolatie-expressies
- Lijstpatronen
- Bestandstypen
- Vereiste leden
- Automatisch standaard structs
- Patroonovereenkomst
Span<char>
op een constantestring
- Uitgebreid
nameof
bereik - Numerieke intptr
ref
velden enscoped ref
- Verbeterde conversie van methodegroep naar gemachtigde
- Waarschuwingsgolf 7
C# 11 introduceert algemene wiskundige en verschillende functies die dit doel ondersteunen. U kunt eenmaal numerieke algoritmen schrijven voor alle getaltypen. Er zijn meer functies om het werken met struct
typen eenvoudiger te maken, zoals vereiste leden en automatisch standaard structs. Werken met tekenreeksen wordt eenvoudiger met letterlijke letterlijke onbewerkte tekenreeksen, newline in tekenreeksinterpolaties en letterlijke UTF-8-tekenreeksen. Met functies zoals lokale bestandstypen kunnen brongeneratoren eenvoudiger worden. Ten slotte voegen lijstpatronen meer ondersteuning toe voor patroonkoppeling.
C#-versie 10
Uitgebracht in november 2021
C# 10 voegt de volgende functies en verbeteringen toe aan de C#-taal:
- Structs opnemen
- Verbeteringen van structuurtypen
- Geïnterpoleerde tekenreekshandlers
global using
Richtlijnen- Declaratie van bestandsbereiknaamruimte
- Uitgebreide eigenschapspatronen
- Verbeteringen in lambda-expressies
- Geïnterpoleerde tekenreeksen toestaan
const
- Recordtypen kunnen worden afgesloten
ToString()
- Verbeterde definitieve toewijzing
- Zowel toewijzing als declaratie in dezelfde destructie toestaan
- Kenmerk toestaan
AsyncMethodBuilder
voor methoden - Kenmerk CallerArgumentExpression
- Verbeterde
#line
pragma
Er zijn meer functies beschikbaar in de preview-modus . Als u deze functies wilt gebruiken, moet u dit instellen Preview
<LangVersion>
in uw project:
- Algemene kenmerken verderop in dit artikel.
- statische abstracte leden in interfaces.
C# 10 blijft werken aan thema's voor het verwijderen van ceremonies, het scheiden van gegevens uit algoritmen en verbeterde prestaties voor de .NET Runtime.
Veel van de functies betekenen dat u minder code typt om dezelfde concepten uit te drukken. Record-structs synthetiseren veel van dezelfde methoden die recordklassen doen. Structs en anonieme typen ondersteunen met expressies. Globaal gebruik van instructies en declaraties van bestandsbereiken betekent dat u afhankelijkheden en naamruimteorganisatie duidelijker uitdrukt. Lambda-verbeteringen maken het gemakkelijker om lambda-expressies te declareren waar ze worden gebruikt. Nieuwe eigenschapspatronen en verbeteringen voor deconstructie maken beknoptere code.
De nieuwe geïnterpoleerde tekenreekshandlers en AsyncMethodBuilder
het gedrag kunnen de prestaties verbeteren. Deze taalfuncties zijn toegepast in .NET Runtime om prestatieverbeteringen in .NET 6 te bereiken.
C# 10 markeert ook meer van een verschuiving naar het jaarlijkse ritme voor .NET-releases. Omdat niet elke functie in een jaarlijks tijdsbestek kan worden voltooid, kunt u een aantal preview-functies in C# 10 proberen. Zowel algemene kenmerken als statische abstracte leden in interfaces kunnen worden gebruikt, maar deze preview-functies kunnen veranderen vóór de definitieve release.
C#-versie 9
Uitgebracht in november 2020
C# 9 is uitgebracht met .NET 5. Dit is de standaardtaalversie voor elke assembly die is gericht op de .NET 5-release. Het bevat de volgende nieuwe en verbeterde functies:
- Records
- Alleen init-setters
- Instructies op het hoogste niveau
- Verbeteringen in patroonkoppeling: relationele patronen en logische patronen
- Prestaties en interoperabiliteit
- Functies aanpassen en voltooien
C# 9 vervolgt drie van de thema's uit eerdere releases: ceremonie verwijderen, gegevens scheiden van algoritmen en meer patronen op meer plaatsen bieden.
Instructies op het hoogste niveau betekent dat uw hoofdprogramma eenvoudiger te lezen is. Er is minder behoefte aan ceremonie: een naamruimte, een Program
klas en static void Main()
zijn allemaal overbodig.
De introductie van records
biedt een beknopte syntaxis voor referentietypen die waardenemantiek volgen voor gelijkheid. U gebruikt deze typen om gegevenscontainers te definiëren die doorgaans minimaal gedrag definiëren. Init-only setters bieden de mogelijkheid voor niet-destructieve mutatie (with
expressies) in records. C# 9 voegt ook covariant-retourtypen toe, zodat afgeleide records virtuele methoden kunnen overschrijven en een type kunnen retourneren dat is afgeleid van het retourtype van de basismethode.
De patroonkoppelingsmogelijkheden zijn op verschillende manieren uitgebreid. Numerieke typen ondersteunen nu bereikpatronen. Patronen kunnen worden gecombineerd met behulp van and
, or
en not
patronen. Haakjes kunnen worden toegevoegd om complexere patronen te verduidelijken:
C# 9 bevat nieuwe verbeteringen voor patroonkoppeling:
- Typepatronen komen overeen met een object dat overeenkomt met een bepaald type
- Haakjes patronen afdwingen of benadrukken de prioriteit van patrooncombinaties
and
Voor beide patronen moeten beide patronen overeenkomen- Voor disjunctive
or
patronen is een van beide patronen vereist die overeenkomen met - Voor ontkende
not
patronen is vereist dat een patroon niet overeenkomt - Voor relationele patronen moet de invoer kleiner zijn dan, groter dan, kleiner dan of gelijk aan of gelijk aan een bepaalde constante
Deze patronen verrijken de syntaxis voor patronen. Bekijk deze voorbeelden:
public static bool IsLetter(this char c) =>
c is >= 'a' and <= 'z' or >= 'A' and <= 'Z';
Met optionele haakjes om duidelijk te maken dat de and
prioriteit hoger is dan or
:
public static bool IsLetterOrSeparator(this char c) =>
c is (>= 'a' and <= 'z') or (>= 'A' and <= 'Z') or '.' or ',';
Een van de meest voorkomende toepassingen is een nieuwe syntaxis voor een null-controle:
if (e is not null)
{
// ...
}
Elk van deze patronen kan worden gebruikt in elke context waarin patronen zijn toegestaan: is
patroonexpressies, switch
expressies, geneste patronen en het patroon van het label van een switch
instructie case
.
Een andere set functies biedt ondersteuning voor high-performance computing in C#:
- De
nint
ennuint
typen modelleren de typen gehele getallen van systeemeigen grootte op de doel-CPU. - Functiepointers bieden gedelegeerde-achtige functionaliteit terwijl de toewijzingen worden voorkomen die nodig zijn om een gedelegeerde-object te maken.
- De
localsinit
instructie kan worden weggelaten om instructies op te slaan.
Prestaties en interoperabiliteit
Een andere set verbeteringen ondersteunt scenario's waarbij codegeneratoren functionaliteit toevoegen:
- Module-initializers zijn methoden die de runtime aanroept wanneer een assembly wordt geladen.
- Gedeeltelijke methoden ondersteunen nieuwe toegankelijke wijzigingstypen en niet-ongeldige retourtypen. In die gevallen moet er een implementatie worden uitgevoerd.
Functies aanpassen en voltooien
C# 9 voegt veel andere kleine functies toe die de productiviteit van ontwikkelaars verbeteren, zowel het schrijven als lezen van code:
- Expressies van het doeltype
new
static
anonieme functies- Voorwaardelijke expressies van het doeltype
- Extensieondersteuning
GetEnumerator()
voorforeach
lussen - Lambda-expressies kunnen verwijderingsparameters declareren
- Kenmerken kunnen worden toegepast op lokale functies
De C# 9-release blijft het werk uitvoeren om C# een moderne programmeertaal voor algemeen gebruik te behouden. Functies blijven moderne workloads en toepassingstypen ondersteunen.
C#-versie 8.0
Uitgebracht in september 2019
C# 8.0 is de eerste primaire C#-release die specifiek gericht is op .NET Core. Sommige functies zijn afhankelijk van nieuwe CLR-mogelijkheden (Common Language Runtime), andere functies op bibliotheektypen die alleen zijn toegevoegd in .NET Core. C# 8.0 voegt de volgende functies en verbeteringen toe aan de C#-taal:
- Alleen-lezen leden
- Standaardinterfacemethoden
- Verbeteringen in patroonkoppeling:
- Schakelen tussen expressies
- Eigenschapspatronen
- Tuple-patronen
- Positiepatronen
- Declaraties gebruiken
- Statische lokale functies
- Wegwerpverwijzingsverwijzing
- Null-verwijzingstypen
- Asynchrone streams
- Indexen en bereiken
- Toewijzing null-coalescing
- Niet-beheerde samengestelde typen
- Stackalloc in geneste expressies
- Verbetering van geïnterpoleerde verbatimtekenreeksen
Standaardinterfaceleden vereisen verbeteringen in de CLR. Deze functies zijn toegevoegd in de CLR voor .NET Core 3.0. Bereiken en indexen en asynchrone streams vereisen nieuwe typen in de .NET Core 3.0-bibliotheken. Nullable reference types, terwijl geïmplementeerd in de compiler, is veel nuttiger wanneer bibliotheken worden geannoteerd om semantische informatie te geven met betrekking tot de null-status van argumenten en retourwaarden. Deze aantekeningen worden toegevoegd in de .NET Core-bibliotheken.
C# versie 7.3
Uitgebracht in mei 2018
Er zijn twee hoofdthema's voor de C# 7.3-release. Eén thema biedt functies waarmee veilige code net zo goed presteert als onveilige code. Het tweede thema biedt incrementele verbeteringen aan bestaande functies. Er zijn ook nieuwe compileropties toegevoegd in deze release.
De volgende nieuwe functies ondersteunen het thema van betere prestaties voor veilige code:
- U hebt toegang tot vaste velden zonder vast te maken.
- U kunt lokale variabelen opnieuw toewijzen
ref
. - U kunt initialisaties gebruiken voor
stackalloc
matrices. - U kunt instructies gebruiken
fixed
met elk type dat ondersteuning biedt voor een patroon. - U kunt algemenere beperkingen gebruiken.
De volgende verbeteringen zijn aangebracht in bestaande functies:
- U kunt tuple-typen testen
==
en!=
gebruiken. - U kunt expressievariabelen op meer locaties gebruiken.
- U kunt kenmerken koppelen aan het backingveld van automatisch geïmplementeerde eigenschappen.
- Methodeomzetting wanneer argumenten verschillen
in
met is verbeterd. - Overbelastingsresolutie heeft nu minder dubbelzinnige gevallen.
De nieuwe compileropties zijn:
-publicsign
om OSS-ondertekening (Open Source Software) van assembly's in te schakelen.-pathmap
om een toewijzing voor bronmappen op te geven.
C# versie 7.2
Uitgebracht in november 2017
C# 7.2 heeft verschillende functies voor kleine talen toegevoegd:
- Initialisatiefunctie voor
stackalloc
matrices. - Gebruik
fixed
instructies met elk type dat ondersteuning biedt voor een patroon. - Vaste velden openen zonder vast te maken.
- Lokale variabelen opnieuw toewijzen
ref
. - Declareer
readonly struct
typen om aan te geven dat een struct onveranderbaar is en als parameterin
moet worden doorgegeven aan de lidmethoden. - Voeg de
in
wijzigingsfunctie toe aan parameters om op te geven dat een argument wordt doorgegeven door verwijzing, maar niet wordt gewijzigd door de aangeroepen methode. - Gebruik de
ref readonly
wijzigingsfunctie voor methode retourneert om aan te geven dat een methode de waarde retourneert op basis van verwijzing, maar schrijfbewerkingen naar dat object niet toestaat. - Declareer
ref struct
typen om aan te geven dat een struct-type rechtstreeks toegang heeft tot beheerd geheugen en altijd moet worden gestapeld. - Gebruik aanvullende algemene beperkingen.
- Niet-gevolgde benoemde argumenten:
- Positionele argumenten kunnen benoemde argumenten volgen.
- Voorlooponderstrepingstekens in numerieke letterlijke waarden:
- Numerieke letterlijke waarden kunnen nu voorloopstrepingstekens hebben voordat eventuele afgedrukte cijfers worden afgedrukt.
private protected
wijzigingsfunctie voor toegang:- De
private protected
toegangsaanpassing maakt toegang mogelijk voor afgeleide klassen in dezelfde assembly.
- De
- Voorwaardelijke
ref
expressies:- Het resultaat van een voorwaardelijke expressie (
?:
) kan nu een verwijzing zijn.
- Het resultaat van een voorwaardelijke expressie (
C# versie 7.1
Uitgebracht in augustus 2017
C# is begonnen met het vrijgeven van puntreleases met C# 7.1. Deze versie heeft het configuratie-element voor taalversieselectie , drie nieuwe taalfuncties en nieuw compilergedrag toegevoegd.
De nieuwe taalfuncties in deze release zijn:
async
Main
methode- Het toegangspunt voor een toepassing kan de
async
wijzigingsfunctie hebben.
- Het toegangspunt voor een toepassing kan de
default
letterlijke expressies- U kunt standaard letterlijke expressies gebruiken in standaardwaarde-expressies wanneer het doeltype kan worden afgeleid.
- Namen van uitgestelde tuple-elementen
- De namen van tuple-elementen kunnen in veel gevallen worden afgeleid van tuple-initialisatie.
- Patroonkoppeling voor algemene typeparameters
- U kunt patroonovereenkomstexpressies gebruiken voor variabelen waarvan het type een algemene typeparameter is.
Ten slotte heeft de compiler twee opties -refout
en -refonly
die het genereren van referentieassembly's beheren.
C#-versie 7.0
Uitgebracht in maart 2017
C#-versie 7.0 is uitgebracht met Visual Studio 2017. Deze versie heeft enkele evolutionaire en coole dingen in de ader van C# 6.0. Hier volgen enkele van de nieuwe functies:
- Variabelen uit
- Tuples en deconstructie
- Patroonherkenning
- Lokale functies
- Uitgevouwen expressie bodyied leden
- Ref locals
- Verw retourneert
Andere functies zijn inbegrepen:
Al deze functies bieden nieuwe mogelijkheden voor ontwikkelaars en de mogelijkheid om schonere code te schrijven dan ooit. Een markering is het verkorten van de declaratie van variabelen die moeten worden gebruikt met het out
trefwoord en door meerdere retourwaarden via tuple toe te staan. .NET Core is nu gericht op elk besturingssysteem en heeft zijn ogen stevig op de cloud en op draagbaarheid. Deze nieuwe mogelijkheden bezetten zeker de gedachten en tijd van taalontwerpers, naast het bedenken van nieuwe functies.
C# versie 6.0
Uitgebracht in juli 2015
Versie 6.0, uitgebracht met Visual Studio 2015, heeft veel kleinere functies uitgebracht die C#-programmering productiever maakten. Hier volgen een paar van deze manieren:
- Statische importbewerkingen
- Uitzonderingsfilters
- Initialisatieprogramma's voor automatische eigenschappen
- Leden van expressies
- Null-doorgifte
- Tekenreeksinterpolatie
- operator nameof
Andere nieuwe functies zijn:
- Initialisatiefuncties voor indexen
- Wachten op catch/finally blocks
- Standaardwaarden voor alleen-ophalen-eigenschappen
Als u deze functies samen bekijkt, ziet u een interessant patroon. In deze versie is C# begonnen met het elimineren van de standaardtaal om code beter leesbaar en leesbaarder te maken. Dus voor fans van schone, eenvoudige code was deze taalversie een enorme winst.
Ze deden één ander ding samen met deze versie, maar het is geen traditionele taalfunctie op zichzelf. Ze hebben Roslyn de compiler uitgebracht als een service. De C#-compiler is nu geschreven in C#en u kunt de compiler gebruiken als onderdeel van uw programmeringsinspanningen.
C#-versie 5.0
Uitgebracht in augustus 2012
C#-versie 5.0, uitgebracht met Visual Studio 2012, was een gerichte versie van de taal. Bijna alle inspanningen voor die versie gingen naar een ander concept van baanbrekende taal: het async
en await
model voor asynchrone programmering. Dit is de belangrijkste lijst met functies:
- Asynchrone leden
- Kenmerken van aanroepergegevens
- Codeproject: Kenmerken van nummerweergave in C# 5.0
Met het kenmerk info van de aanroeper kunt u eenvoudig informatie ophalen over de context waarin u wordt uitgevoerd zonder gebruik te maken van een ton met standaardspiegelingscode. Het heeft veel toepassingen in diagnostische gegevens en logboekregistratietaken.
Maar async
en await
zijn de echte sterren van deze release. Toen deze functies in 2012 uitkwamen, veranderde C# het spel opnieuw door asynchroon in de taal te bakken als eersteklas deelnemer.
C#-versie 4.0
Uitgebracht in april 2010
C#-versie 4.0, uitgebracht met Visual Studio 2010, heeft enkele interessante nieuwe functies geïntroduceerd:
- Dynamische binding
- Benoemde/optionele argumenten
- Algemene covariant en contravariant
- Ingesloten interoperabiliteitstypen
Ingesloten interoperabiliteitstypen hebben de implementatiepijn van het maken van COM-interoperabiliteitsassembly's voor uw toepassing versoepeld. Algemene covariantie en contravariantie geven u meer kracht om generieken te gebruiken, maar ze zijn een beetje academisch en waarschijnlijk het meest gewaardeerd door framework- en bibliotheekauteurs. Met benoemde en optionele parameters kunt u veel overbelastingen van methoden elimineren en gemak bieden. Maar geen van deze functies zijn precies paradigma's die veranderen.
De belangrijkste functie was de introductie van het dynamic
trefwoord. Het dynamic
trefwoord dat is geïntroduceerd in C#-versie 4.0, is de mogelijkheid om de compiler te overschrijven bij het typen van compilatietijd. Met behulp van het dynamische trefwoord kunt u constructies maken die vergelijkbaar zijn met dynamisch getypte talen zoals JavaScript. U kunt er een dynamic x = "a string"
maken en er vervolgens zes aan toevoegen, zodat u de runtime kunt laten bepalen wat er moet gebeuren.
Dynamische binding biedt u het potentieel voor fouten, maar ook grote kracht in de taal.
C#-versie 3.0
Uitgebracht in november 2007
C#-versie 3.0 kwam eind 2007, samen met Visual Studio 2008, hoewel de volledige boot met taalfuncties daadwerkelijk zou worden geleverd met .NET Framework versie 3.5. Deze versie heeft een belangrijke wijziging in de groei van C# gemarkeerd. C# werd opgericht als een echt enorme programmeertaal. Laten we eens kijken naar enkele belangrijke functies in deze versie:
- Eigenschappen die automatisch zijn geïmplementeerd
- Anonieme typen
- Query-expressies
- Lambda-expressies
- Expressiestructuren
- Extensiemethoden
- Impliciet getypte lokale variabelen
- Gedeeltelijke methoden
- Initialisatiefuncties voor objecten en verzamelingen
Met terugwerkende kracht lijken veel van deze functies zowel onvermijdelijk als onafscheidelijk. Ze passen allemaal strategisch bij elkaar. De moordenaarfunctie van deze C#-versie was de query-expressie, ook wel bekend als Language-Integrated Query (LINQ).
Een meer genuanceerde weergave onderzoekt expressiestructuren, lambda-expressies en anonieme typen als de basis waarop LINQ is opgebouwd. Maar in beide gevallen heeft C# 3.0 een revolutionaire concept gepresenteerd. C# 3.0 begon de basis te leggen voor het omzetten van C# in een hybride objectgeoriënteerde / functionele taal.
U kunt nu met name SQL-stijl, declaratieve query's schrijven om onder andere bewerkingen uit te voeren op verzamelingen. In plaats van een for
lus te schrijven om het gemiddelde van een lijst met gehele getallen te berekenen, kunt u dat nu gewoon doen als list.Average()
. De combinatie van query-expressies en extensiemethoden maakte een lijst met gehele getallen veel slimmer.
C#-versie 2.0
Uitgebracht in november 2005
Laten we eens kijken naar enkele belangrijke functies van C# 2.0, uitgebracht in 2005, samen met Visual Studio 2005:
- Generics
- Gedeeltelijke typen
- Anonieme methoden
- Typen null-waarden
- Iterators
- Covariantie en contravariantie
Andere C# 2.0-functies hebben mogelijkheden toegevoegd aan bestaande functies:
- Afzonderlijke toegankelijkheid van getter/setter
- Methodegroepconversies (gemachtigden)
- Statische klassen
- Deductie delegeren
Terwijl C# begon als een algemene objectgeoriënteerde taal (OO), veranderde C# versie 2.0 dat in een haast. Met generics kunnen typen en methoden op een willekeurig type werken terwijl de veiligheid van het type behouden blijft. U kunt bijvoorbeeld typen List<T> veilige bewerkingen uitvoeren List<string>
op List<int>
deze tekenreeksen of gehele getallen terwijl u ze doorloopt. Het gebruik van generics is beter dan het maken van een ListInt
type dat is afgeleid van ArrayList
of gieten van Object
voor elke bewerking.
C#-versie 2.0 heeft iterators meegenomen. Om het beknopt te maken, kunt u met iterators alle items in een List
(of andere enumerable typen) met een foreach
lus onderzoeken. Iterators hebben als eersteklas onderdeel van de taal aanzienlijk verbeterde leesbaarheid van de taal en de mogelijkheid van personen om te redeneren over de code.
C#-versie 1.2
Uitgebracht in april 2003
C#-versie 1.2 geleverd met Visual Studio .NET 2003. Het bevatte enkele kleine verbeteringen in de taal. Het meest opmerkelijk is dat vanaf deze versie de code die wordt gegenereerd in een foreach
lus die wordt aangeroepen Dispose op een IEnumerator wanneer die IEnumerator is geïmplementeerd IDisposable.
C#-versie 1.0
Uitgebracht in januari 2002
Wanneer u teruggaat en kijkt, ziet C#-versie 1.0, uitgebracht met Visual Studio .NET 2002, er veel uit als Java. Als onderdeel van de gestelde ontwerpdoelstellingen voor ECMA, wilde het een "eenvoudige, moderne, objectgeoriënteerde taal voor algemeen gebruik" zijn. Op dat moment, zoals Java, betekende het dat het die vroege ontwerpdoelen bereikte.
Maar als je nu terugkijkt op C# 1.0, zou je jezelf een beetje duizelig vinden. Het miste de ingebouwde asynchrone mogelijkheden en een aantal van de gelikte functionaliteiten rond generics die u voor het eerst aanneemt. Eigenlijk miste het generieken helemaal. En LINQ? Nog niet beschikbaar. Die toevoegingen zouden enkele jaren duren.
C#-versie 1.0 zag er gestript uit van functies, vergeleken met vandaag. U zou merken dat u uitgebreide code schrijft. Maar toch moet je ergens beginnen. C#-versie 1.0 was een levensvatbaar alternatief voor Java op het Windows-platform.
De belangrijkste functies van C# 1.0 zijn inbegrepen:
- Klassen
- Structs
- Interfaces
- Gebeurtenissen
- Eigenschappen
- Afgevaardigden
- Operators en expressies
- Overzichten
- Kenmerken
Artikel oorspronkelijk gepubliceerd op de NDepend blog, met dank aan Erik Dietrich en Patrick Smacchia.