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 startar ett nytt jobb eller går med i ett team som använder C#, hjälper den här artikeln dig att snabbt bli produktiv. Den visar vad som är bekant från Java och vad som är nytt i C#.
C# och Java har många likheter. När du lär dig C# kan du använda mycket av den kunskap du redan har från programmering i Java:
-
Liknande syntax: Både Java 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 syntaxen är samma som Java och C. Klammerparenteserna och semikolonen är bekanta. Kontrollinstruktionerna som
if,else,switchär desamma. Loopningssatserna förfor,whileochdo...whileär desamma. Samma nyckelord förclassochinterfacefinns på båda språken. Åtkomstmodifierarna frånpublictillprivateär desamma. Även många av de inbyggda typerna använder samma nyckelord:int,stringochdouble. - Objektorienterat paradigm: Både Java och C# är objektorienterade språk. Begreppen polymorfism, abstraktion och inkapsling gäller på båda språken. Båda har lagt till nya konstruktioner, men kärnfunktionerna är fortfarande relevanta.
- Starkt skrivet: Både Java och C# är starkt skrivna språk. Du deklarerar datatypen för variabler, antingen explicit eller implicit. Kompilatorn tillämpar typsäkerhet. Kompilatorn fångar upp typrelaterade fel i koden innan du kör koden.
- Plattformsoberoende: Både Java och C# är plattformsoberoende. Du kan köra dina utvecklingsverktyg på din favoritplattform. Programmet kan köras på flera plattformar. Din utvecklingsplattform behöver inte matcha målplattformen.
-
Undantagshantering: Både Java och C# utlöser undantag för att indikera fel. Båda använder
try-catch-finallyblock för att hantera undantag. Undantagsklasserna har liknande namn och arvshierarkier. En skillnad är att C# inte har begreppet kontrollerade undantag. Vilken metod som helst kan (i teorin) utlösa ett undantag. - Standardbibliotek: .NET-körningen och Java Standard Library (JSL) har stöd för vanliga uppgifter. Båda har omfattande ekosystem för andra öppen källkod paket. I C# är pakethanteraren NuGet. Det är likt Maven.
-
Skräpinsamling: Båda språken använder automatisk minneshantering via skräpinsamling. Körningen återtar minnet från objekt som inte refereras till. En skillnad är att C# gör att du kan skapa värdetyper som
structtyper.
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.
Variabeldeklaration och typinferens:
// Java
var name = "Hello";
final int count = 5;
// C#
var name = "Hello";
const int count = 5;
Stränginterpolation:
// Java
var message = "Hello, " + name + "! Count: " + count;
// C#
var message = $"Hello, {name}! Count: {count}";
Läs mer: Stränginterpolation
Lambda-uttryck:
// Java
list.stream().filter(x -> x > 5).collect(Collectors.toList());
// C#
var result = list.Where(x => x > 5).ToList();
Läs mer: LINQ-översikt
Null-hantering:
// Java
String value = optional.orElse("default");
// C#
string value = input ?? "default";
Läs mer: Referenstyper som kan ogiltigförklaras
Vad är bekant
Du kan arbeta produktivt i C# nästan omedelbart på grund av likheterna. När du fortsätter lär du dig funktioner och idiom i C# som inte är tillgängliga i Java:
-
Mönstermatchning: Mönstermatchning möjliggör koncisa villkorssatser och uttryck baserat på formen på komplexa datastrukturer.
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ökernullefter innan du avrefererar uttrycket. För icke-nullbara typer varnar kompilatorn dig om du kanske tilldelar ettnullvärde till variabeln. Icke-nullbara referenstyper minimerar programmeringsfel som utlöser en System.NullReferenceException. - Tillägg: I C# kan du skapa medlemmar som utökar en klass eller ett gränssnitt. Tillägg ger nytt beteende för en typ från ett bibliotek eller alla typer som implementerar ett visst gränssnitt.
- LINQ: Språkintegrerad fråga (LINQ) innehåller en gemensam syntax för att fråga och transformera data, oavsett lagring.
- Lokala funktioner: I C#kan du kapsla funktioner inuti metoder eller andra lokala funktioner. Lokala funktioner ger ännu ett lager av inkapsling.
Tips/Råd
Mer information om C#:s typsystem – inklusive struct jämfört med class, poster och gränssnitt – finns i översikten av typsystemet i avsnittet Grunderna.
Det finns andra funktioner i C# som inte finns i Java. Funktioner som async och await modellerar asynkrona åtgärder i sekventiell syntax. Instruktionen using frigör automatiskt icke-minnesresurser.
Det finns också några liknande funktioner mellan C# och Java som har subtila men viktiga skillnader:
-
Egenskaper och indexerare: Både egenskaper och indexerare (som behandlar en klass som en matris eller ordlista) har språkstöd. I Java namnger de konventioner för metoder som börjar med
getochset. -
Poster: I C#kan poster vara antingen
class(referens) ellerstruct(värde) typer. C#-records kan vara oföränderliga, men behöver inte vara oföränderliga. - Tupplar har olika syntax i C# och Java.
- Attribut liknar Java-anteckningar.
Slutligen finns det Java-språkfunktioner som inte är tillgängliga i C#:
- Kontrollerade undantag: I C# kan vilken metod som helst teoretiskt utlösa alla undantag.
- Kontrollerad matriskovarians: I C# är matriser inte säkert samvarianta. Du bör använda de allmänna samlingsklasserna och gränssnitten om du behöver samvarianta strukturer.
Sammantaget bör det vara smidigt att lära sig C# för en utvecklare med erfarenhet av Java. C# har tillräckligt med välbekanta idiom för att du ska vara produktiv när du lär dig de nya idioderna.
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.