Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Om du ansluter till ett team som använder C#, eller utforskar det för utveckling på serversidan eller i fullstack, hjälper den här artikeln dig att snabbt bli produktiv. Den visar vad som är bekant från JavaScript och TypeScript och vad som är nytt i C#.
C#, TypeScript och JavaScript är alla medlemmar i C-språkfamiljen. Likheterna mellan språken hjälper dig att snabbt bli produktiv i C#.
-
Liknande syntax: JavaScript, TypeScript och C# finns i C-språkfamiljen. Den likheten innebär att du redan kan läsa och förstå C#. Det finns vissa skillnader, men de flesta av syntaxen är desamma som JavaScript och C. Klammerparenteserna och semikolonen är bekanta. Kontrollinstruktionerna som
if,elseochswitchär desamma. Loopningsinstruktionerna förfor,whileochdo...whileär desamma. Samma nyckelord förclassochinterfacefinns i både C# och TypeScript. Åtkomstmodifierarna i TypeScript och C#, frånpublictillprivate, är desamma. -
=>-token: Alla språk har stöd för lätta funktionsdefinitioner. I C# kallas de lambda-uttryck. I JavaScript kallas de vanligtvis för pilfunktioner. - Funktionshierarkier: Alla tre språken stöder lokala funktioner, som är funktioner som definierats i andra funktioner.
-
Async/Await: Alla tre språken delar samma
asyncochawaitnyckelord för asynkron programmering. - Skräpinsamling: Alla tre språken förlitar sig på en skräpinsamlare för automatisk minneshantering.
-
Händelsemodell: C#:s
eventsyntax liknar JavaScripts modell för dom-händelser (Document Object Model). - Pakethanterare: NuGet är den vanligaste pakethanteraren för C#, ungefär som npm för JavaScript-program. C#-bibliotek levereras i sammansättningar.
En snabbsyntax
I följande exempel visas några vanliga mönster sida vid sida. Dessa jämförelser är inte uttömmande, men de ger dig en snabb känsla för syntaxskillnaderna.
Skriv anteckningar:
// TypeScript
let name: string = "Hello";
let count: number = 5;
// C#
string name = "Hello";
int count = 5;
Async/await:
// TypeScript
async function fetchData(): Promise<string> {
const response = await fetch(url);
return await response.text();
}
// C#
async Task<string> FetchDataAsync() {
var response = await client.GetAsync(url);
return await response.Content.ReadAsStringAsync();
}
Läs mer: Asynkron programmering
Klasser:
// TypeScript
class Point {
constructor(public x: number, public y: number) {}
}
// C#
record Point(int X, int Y);
Läs mer: Poster
Mönstermatchning:
// TypeScript - manual type checking
if (typeof value === "string") { /* ... */ }
// C# - pattern matching
if (value is string s) { /* use s */ }
Läs mer: Mönstermatchning
Nyheter för dig i C#
När du lär dig C# får du begrepp som inte ingår i JavaScript. Vissa av dessa begrepp kan vara bekanta för dig om du använder TypeScript:
-
C# Type System: C# är ett starkt skrivet språk. Varje variabel har en typ och den typen kan inte ändras. Du definierar
classellerstructtyper. Du kan definierainterfacedefinitioner som definierar beteende som implementeras av andra typer. TypeScript innehåller många av dessa begrepp, men eftersom TypeScript bygger på JavaScript är typsystemet inte lika strikt. -
Mönstermatchning: Mönstermatchning möjliggör koncisa villkorssatser och uttryck baserat på formen på komplexa datastrukturer. Uttrycket
iskontrollerar om en variabel är något mönster. Det mönsterbaseradeswitchuttrycket ger en omfattande syntax för att inspektera en variabel och fatta beslut baserat på dess egenskaper. - Stränginterpolation och råa strängliteraler: Med stränginterpolation kan du infoga utvärderade uttryck i en sträng i stället för att använda positionsidentifierare. Med råa strängliteraler kan du minimera escape-sekvenser i text.
-
Null-typer och icke-nullbara typer: C# stöder nullbara värdetyper och nullbara referenstyper genom att lägga till suffixet
?till en typ. För null-typer varnar kompilatorn dig om du inte söker efternullinnan du avrefererar uttrycket. För icke-nullbara typer varnar kompilatorn dig om du tilldelar variabeln ettnullvärde. Dessa funktioner kan minimera att programmet genererar en System.NullReferenceException. Syntaxen kan vara bekant från TypeScripts användning av?för valfria egenskaper. - LINQ: Språkintegrerad fråga (LINQ) ger en gemensam syntax för att fråga och transformera data, oavsett lagring.
Tips/Råd
Om du vill veta mer om C#:s typsystem, inklusive class vs. struct, generiska objekt och gränssnitt, går du till översikten över typsystem i avsnittet Grunderna.
När du lär dig mer blir andra skillnader uppenbara, men många av dessa skillnader är mindre i omfånget.
Vissa välbekanta funktioner och idiom från JavaScript och TypeScript är inte tillgängliga i C#:
-
dynamiska typer: C# använder statiska skrivningar. En variabeldeklaration innehåller typen och den typen kan inte ändras. Det finns en
dynamic-typ i C# som tillhandahåller körbindning. -
Prototypal inheritance: C#-arv är en del av typdeklarationen. En C#-
class-deklaration anger vilken basklass som helst. I JavaScript anger du__proto__egenskapen för att ange bastypen för vilken som helst instans. - Tolkat språk: C#-kod måste kompileras innan du kör den. JavaScript-kod kan köras direkt i webbläsaren.
Dessutom är några fler TypeScript-funktioner inte tillgängliga i C#:
- Uniontyper: C# stöder inte unionstyper. Designförslag pågår dock.
-
Dekoratörer: C# har inte dekoratörer. Vissa vanliga dekoratörer, till exempel
@sealedär reserverade nyckelord i C#. Andra vanliga dekoratörer kan ha motsvarande attribut. För andra dekoratörer kan du skapa egna attribut. - Mer förlåtande syntax: C#-kompilatorn parsar kod striktare än vad JavaScript kräver.
Om du skapar ett webbprogram bör du överväga att använda Blazor för att skapa ditt program. Blazor är ett fullständigt webbramverk som skapats för C#. Blazor-komponenter kan köras på servern, som .NET-sammansättningar eller på klienten med hjälp av WebAssembly. Blazor stöder interop med dina JavaScript- eller TypeScript-favoritbibliotek.
Nästa steg
- En rundtur i C#: Få en översikt på hög nivå över alla C#-funktioner.
- Självstudier för nybörjare: Lär dig C# steg för steg med interaktiva lektioner.
- Vad du kan skapa med C#: Utforska de programtyper som du kan skapa med C#.
- Grunderna i C#: Fördjupa dig i typsystemet, objektorienterad programmering med mera.