Dela via


Översikt för Java-utvecklare som lär sig 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:

  1. 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ör for, whileoch do...while är desamma. Samma nyckelord för class och interface finns på båda språken. Åtkomstmodifierarna från public till private är desamma. Även många av de inbyggda typerna använder samma nyckelord: int, stringoch double.
  2. 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.
  3. 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.
  4. 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 krävs inte för att matcha målplattformen.
  5. Undantagshantering: Både Java och C# utlöser undantag för att indikera fel. Båda använder try - - catchfinally block 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.
  6. Standardbibliotek: .NET-körningen och Java Standard Library (JSL) har stöd för vanliga uppgifter. Båda har omfattande ekosystem för andra paket med öppen källkod. I C# är pakethanteraren NuGet. Det är likt Maven.
  7. 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 struct typer.

Du kommer att vara produktiv i C# nästan omedelbart på grund av likheterna. När du fortsätter bör du lära dig funktioner och idiom i C# som inte är tillgängliga i Java:

  1. Mönstermatchning: Mönstermatchning möjliggör koncisa villkorssatser och uttryck baserat på formen på komplexa datastrukturer. Instruktionen is kontrollerar om en variabel "är" något mönster. Det mönsterbaserade switch uttrycket ger en omfattande syntax för att inspektera en variabel och fatta beslut baserat på dess egenskaper.
  2. 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.
  3. 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 null efter innan du avrefererar uttrycket. För icke-nullbara typer varnar kompilatorn dig om du kanske tilldelar ett null värde till variabeln. Icke-nullbara referenstyper minimerar programmeringsfel som utlöser en System.NullReferenceException.
  4. Tilläggsmetoder: I C#kan du skapa metoder som utökar en klass eller ett gränssnitt. Tilläggsmetoder utökar beteendet för en typ från ett bibliotek eller alla typer som implementerar ett visst gränssnitt.
  5. LINQ: Språkintegrerad fråga (LINQ) innehåller en gemensam syntax för att fråga och transformera data, oavsett lagring.
  6. Lokala funktioner: I C#kan du kapsla funktioner inuti metoder eller andra lokala funktioner. Lokala funktioner ger ännu ett lager av inkapsling.

Det finns andra funktioner i C# som inte finns i Java. Du ser funktioner som async och await, och using -instruktioner för att automatiskt frigöra icke-minnesresurser.

Det finns också några liknande funktioner mellan C# och Java som har subtila men viktiga skillnader:

  1. 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 get och set.
  2. Poster: I C#kan poster vara antingen class (referens) eller struct (värde) typer. C#-poster kan vara oföränderliga, men krävs inte för att vara oföränderliga.
  3. Tupplar har olika syntax i C# och Java.
  4. Attribut liknar Java-anteckningar.

Slutligen finns det Java-språkfunktioner som inte är tillgängliga i C#:

  1. Kontrollerade undantag: I C# kan vilken metod som helst teoretiskt utlösa alla undantag.
  2. 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. Du hittar tillräckligt med välbekanta idiom för att snabbt bli produktiv, och du lär dig de nya idiomen snabbt.