På grund af tekniske begrænsninger kunne den ønskelige typografi af titlen ikke gengives korrekt.
VS # | ||
![]() | ||
![]() | ||
Dato for første version | 2001 | |
---|---|---|
Paradigme | Struktureret , bydende nødvendigt , objektorienteret | |
Forfatter | Microsoft | |
Sidste version | 9,0 (4. september 2020) | |
Udviklingsversion | 8.0 | |
Indtastning | Statisk , stærk , nominativ | |
Dialekter | 1.0, 1.1, 1.2, 2.0 (ECMA), 3.0, 3.5, 4.0, 5.0, 6.0, 7.0, 7.1, 7.2, 7.3, 8.0, 9.0 | |
Påvirket af | C ++ , Java | |
Påvirket | Swift , Vala , F # , Kotlin , TypeScript | |
Implementeringer | Microsoft .NET , Mono , DotGNU | |
Operativ system | Tværplatform | |
Internet side | docs.microsoft.com/en-us/dotnet/csharp og docs.microsoft.com/de-de/dotnet/csharp | |
Filudvidelse | .cs | |
C # ( C skarp [ s i ː . Ʃ ɑ ː p ] på britisk engelsk ) er et sprog med objektorienteret programmering , der er markedsført af Microsoft siden 2002 og designet til at udvides på platformen Microsoft .NET .
Det stammer fra C ++ og meget tæt på Java, hvorfra det tager den generelle syntaks såvel som begreberne op, tilføjer forestillinger som operatøroverbelastning , indekserer og delegerede . Det bruges især til at udvikle webapplikationer på ASP.NET- platformen .
C # er et programmeringssprog objektorienteret , stærkt skrevet , afledt af C og C ++ , det sprog som Java . Det bruges til at udvikle web-applikationer , såvel som desktop applikationer , web services , kommandoer, widgets, eller klasse biblioteker . I C # er en applikation en gruppe klasser, hvor en af klasserne har en hovedmetode , som det gøres i Java.
C # er beregnet til at udvikle sig på .NET- platformen , en teknologistak oprettet af Microsoft for at efterkomme COM .
Eksekverbare filer i C # er opdelt i samlinger, navneområder, klasser og klassemedlemmer. En samling er den kompilerede form, som kan være et program (en eksekverbar) eller et klassebibliotek (en dll). En samling indeholder den eksekverbare kode i MSIL samt symbolerne. MSIL- kode oversættes til maskinsprog ved kørsel ved hjælp af just-in-time-funktionen på .NET-platformen.
C # er beregnet til udvikling på .NET-platformen. Hjertet i denne teknologiske stak er .NET-rammen , der består af:
Et andet produkt fra .NET-platformen er Visual Studio .NET- udviklingsmiljøet , et værktøj, der typisk bruges til programmering i C #.
C # er et sprog, der stammer fra C ++ , det giver sikker indtastning samt mulighederne for indkapsling , arv og polymorfisme af objektorienterede sprog. I C # er alle typer objekter . Sproget har en affaldssamler og et undtagelseshåndteringssystem .
Sikker skrivning betyder især, at følgende operationer afvises: brug af en ikke-initialiseret variabel, forsøg på at få adgang ud over grænserne for et array, skriv konverteringer, hvis resultater ikke er forudsigelige, overskridelse af grænser under aritmetisk operation.
Mange af Java 's muligheder findes i C #, og der er en stærk lighed mellem kode skrevet i C # og tilsvarende kode i Java.
I C # kan variabler være af en referencetype eller af en værditype . Værdityper er primitive typer, enumerationer, struct og nullable type. Referencetyper er klasser, grænseflader, arrays og delegeret .
Primitive typerDe primitive typer er sbyte, kort, int, lang, byte, ushort, uint, ulong, char, float, dobbelt, decimal og bool.
klasseDe mest grundlæggende konstruktioner af C # -sproget er klasser . Disse kan indeholde konstanter, felter, egenskaber, indeksatorer, metoder, begivenheder, operatorer, konstruktører, destruktorer eller underklasser. De grundlæggende klasser er streng og objekt.
structStructs ligner klasser, men de er værdityper og kan ikke arves .
delegeretEn delegeret er en henvisning til en metode, der har visse parametre. Delegater bruges til at tildele metoder til variabler og videregive dem som parametre.
enumEn opregnet type er en værditype, der har et sæt konstanter. Hver opregnede type har en underliggende type: en primitiv type bestemt i henhold til konstanternes værdier.
ugyldig typeNullables er primitive typer, der desuden kan være nul . Hver primitive type T har en tilknyttet ugyldig type T?. For eksempel en variabel af typen int? kan indeholde et int eller null.
Nøgleordene i C # 1.0 er:
abstract class event if new readonly as const explicit implicit null ref base continue extern in object return bool decimal false int operator sbyte break default finally interface out sealed byte delegate fixed internal override short case do float is params sizeof catch double for lock private stackalloc char else foreach long protected static checked enum goto namespace public string struct throw typeof unchecked using volatile switch true uint unsafe virtual while this try ulong ushort voidNøgleord tilføjet mellem C # 2.0 og 6.0:
add dynamic join select alias equals let set ascending from nameof value async get on var await global orderby where by group partial when descending into remove yieldSproget har en række ændringer fra C / C ++; følgende punkter vil især blive bemærket:
Selvom C # ligner Java, er der nogle bemærkelsesværdige forskelle, for eksempel:
Det var i september 2002, at .NET-platformen og C # blev præsenteret for offentligheden. C # bliver det de facto sprog for denne platform, det er også blevet brugt til at implementere en del af .NET platformen.
versionerÅr | Version | Bibliotek | Hovedændring |
---|---|---|---|
2002 | 1.0 | .NET framework 1.0 og 1.1 | |
2005 | 2.0 | .NET framework 2.0 | genericitet tilføjet til C # og framework |
2008 | 3.0 | .NET framework 3.5 | LINQ (Sprogintegrerede forespørgsler) |
2010 | 4.0 | .NET framework 4.0 | dynamiske typer |
2012 | 5.0 | .NET framework 4.5 | asynkrone metoder |
2015 | 6.0 | .NET framework 4.6 | version til linux |
2016 | 7,0 | .NET framework> = 4.5 | Tuples, lokale funktioner |
2019 | 8.0 | .NET standard> = 2.1 og .NET Core> = 3.0 | LæsKun medlem, flet opgaveoperatør |
Microsoft stilles til rådighed for offentligheden iOktober 2005efter en lang periode med beta-test version 2.0 af .NET-biblioteket ledsaget af en ny version af næsten alle de tilknyttede værktøjer. C # er ingen undtagelse fra reglen og frigives derfor i version 2.0 med følgende tilføjelser:
Som reference er de fulde specifikationer for de nye funktioner introduceret i version 2.0 tilgængelige på de eksterne links .
Anders Hejlsberg , Delphis far, talte om implementeringen af generiske stoffer i C #, Java og C ++ i dette interview (i) .
Funktionaliteten af ugyldige typer blev korrigeret blot et par uger før offentliggørelsen af version 2.0, fordi det blev afsløret, at hvis værdien af variablen faktisk var nul, var denne variabel ikke nul i den traditionelle betydning af udtrykket, det vil sige det er ikke en tom reference. Således resulterede konvertering af en primitiv nulværdi til et objekt i en ikke-nul-reference til en nulværdi. For at rette op på dette problem var det derfor nødvendigt at rette CLR-kernen og udføre adskillige kontroller og rettelser på alle produkterne i .NET 2.0-serien (Visual Studio 2005, SQL Server 2005, C # og VB.NET).
C # 3.0 blev præsenteret på PDC 2005. Den endelige version er tilgængelig siden 19. november 2007til download fra Microsoft-webstedet (en) . De vigtigste nye funktioner er som følger:
En oversigt over C # 3.0 og LINQ findes på siden .NET Framework Development Center .
Kode, der er udarbejdet i C # 3.0, er fuldt kompatibel med 2.0, da forbedringerne er rent syntaktiske eller består af genveje, der kompenseres ved kompileringstidspunktet. Nye funktioner, der er introduceret i version 3.5-biblioteker (LINQ osv.), Kan dog ikke bruges med tidligere versioner af C #.
Denne version kræver Windows XP eller nyere ( Vista eller Windows 7 ). Den er ikke tilgængelig til Windows 2000 .
Den version 4 sprog indeholder flere nye funktioner:
Den .NET 4.0 rammer blev udgivet på12. april 2010, ledsaget af Visual Studio 2010. Det tilbyder blandt andet:
Den version 5 sprog bruges til at programmere asynkrone programmer blot ved at tilføje søgeord asyncog await.
Opførelsen af lukninger i sløjfen foreacher blevet ændret. Det er ikke længere nødvendigt at indføre en lokal variabel i en sløjfe for foreachat undgå lukningsproblemer .
Bemærk også de oplysninger, der vedrører den, der ringer op, så du kan kende navnet på den metode, der kaldte en ejendom.
Den sjette version af C # foretager flere ændringer, herunder:
Automatisk implementerede egenskaber (eller automatiske egenskaber) dukkede først op i C # 3 for at forenkle erklæringen af egenskaber, der simpelthen indkapsler adgang til felter. Selvom de gør koden mere kortfattet, har de en ulempe: det er ikke muligt at initialisere dem på erklæringsniveau, det skal nødvendigvis gøres i konstruktøren. Derudover er det ikke muligt at gøre automatiske egenskaber skrivebeskyttet, da de ikke har nogen mutator (setter), og derfor kunne vi ikke tildele dem en værdi.
C # 6 løser dette problem ved at lade automatiske egenskaber initialiseres på deklarationsniveau.
C # er standardiseret af ECMA (ECMA-334) idecember 2001og af ISO / IEC ( ISO / IEC 23270 ) i 2003 .
Ændringerne i version 2.0 er standardiseret af ECMA (ECMA-334) ijuni 2006og ved ISO / IEC ( ISO / IEC 23270: 2006 ) iSeptember 2006.
Microsoft har åbnet kildekoden for nogle biblioteker, der bruges af C # i oktober 2007under Microsoft Reference Source License (MS-RSL).
ECMA 334-standarden og ISO 23270 definerer navnet på sproget som Unicode- tegnet 0043 (store bogstaver C) efterfulgt af tegnet 0023 (#). Det udtales "C-skarpt" og ikke "C-hash", "skarpt" betegner faktisk det musikalske symbol ♯ men # er nødvendigt for nem adgang fra et computertastatur, der i stedet tilbyder korset ("hash").
Navnet "C #" er inspireret af musikalsk notation, hvor en skarp indikerer, at den skrevne note skal øges med en halvtone. Dette svarer til C ++ sprognavnet, hvor "++" angiver, at en variabel skal forøges med 1 efter at være blevet evalueret. # -Symbolet ligner også en ligatur med fire "+" -symboler (i et to-to-to-gitter), hvilket betyder, at sproget er en forøgelse af C ++.