JavaScript- és TypeScript-fejlesztőknek készült ütemterv a C tanulásához#

Ha olyan csapathoz csatlakozik, amely C#-t használ, vagy kiszolgálóoldali vagy teljes körű fejlesztéshez használja, ez a cikk segít a hatékony munkavégzésben. Kiemeli, hogy mi az, ami ismerős a JavaScriptben és a TypeScriptben, valamint mi az új a C#-ban.

A C#, a TypeScript és a JavaScript a C nyelvcsalád összes tagja. A nyelvek közötti hasonlóságok segítenek gyorsan hatékonyan dolgozni a C#-ban.

  1. Hasonló szintaxis: A JavaScript, a TypeScript és a C# a C nyelvcsaládban található. Ez a hasonlóság azt jelenti, hogy már olvashatja és megértheti a C#-t. Vannak különbségek, de a szintaxis nagy része ugyanaz, mint a JavaScript és a C. A kapcsos zárójelek és pontosvesszők ismerősek. Az olyan vezérlő utasítások, mint ifa , elseés switch ugyanazok. A for, while és do...while ciklusutasítások ugyanazok. A class és a interface kulcsszavai c# és TypeScript nyelven is szerepelnek. A TypeScript és a C# hozzáférési módosítói public és privateközött ugyanazok.
  2. A => token: Minden nyelv támogatja a könnyűsúlyú függvénydefiníciókat. A C#-ban lambda kifejezéseknek nevezzük őket. JavaScriptben általában nyílfüggvényeknek nevezzük őket.
  3. függvényhierarchiák: Mindhárom nyelv támogatja helyi függvényeket, amelyek más függvényekben definiált függvények.
  4. Async / Await: Mindhárom nyelv ugyanazt a async és await kulcsszavakat használja az aszinkron programozáshoz.
  5. szemétgyűjtési: Mindhárom nyelv egy szemétgyűjtőre támaszkodik az automatikus memóriakezeléshez.
  6. eseménymodell: A C#event szintaxisa hasonló a JavaScript-modell dokumentumobjektum-modell (DOM) eseményeihez.
  7. Csomagkezelő: A NuGet a C# leggyakoribb csomagkezelője, hasonló a JavaScript-alkalmazások npm-éhez. A C# könyvtárakat gyűjteményekben szállítják.

Szintaxis egy pillantással

Az alábbi példák néhány gyakori mintát mutatnak egymás mellett. Ezek az összehasonlítások nem teljesek, de gyors áttekintést nyújtanak a szintaxisbeli különbségekről.

Írjon be széljegyzeteket:

// 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();
}

További információ: Aszinkron programozás.

Osztályok:

// TypeScript
class Point {
    constructor(public x: number, public y: number) {}
}
// C#
record Point(int X, int Y);

További információ: Rekordok.

Mintaegyezés:

// TypeScript - manual type checking
if (typeof value === "string") { /* ... */ }
// C# - pattern matching
if (value is string s) { /* use s */ }

További információ: Mintaegyeztetés.

Újdonságok a C-ben#

A C# elsajátítása során olyan fogalmakkal találkozik, amelyek nem részei a JavaScriptnek. A TypeScript használata esetén az alábbi fogalmak némelyike ismerős lehet:

  1. C# típusrendszer: A C# egy erősen gépelt nyelv. Minden változónak van típusa, és ez a típus nem módosítható. Definiálhat class vagy struct típusokat. Definiálhat olyan interface definíciókat, amelyek más típusok által implementált viselkedést határoznak meg. A TypeScript számos fogalmat tartalmaz, de mivel a TypeScript JavaScriptre épül, a típusrendszer nem olyan szigorú.
  2. Mintaegyezés: A mintaegyeztetés lehetővé teszi a feltételes utasítások és kifejezések tömör, összetett adatstruktúrákon alapuló használatát. A is kifejezés ellenőrzi, hogy egy változó megegyezik-e valamilyen mintázattal. A mintaalapú switch kifejezés gazdag szintaxist biztosít a változók vizsgálatához és a jellemzői alapján történő döntéshozatalhoz.
  3. Sztring interpolációja és nyers sztringkonstansok: A sztring interpolációja lehetővé teszi a kiértékelt kifejezések sztringbe való beszúrását a helyazonosítók használata helyett. A nyers sztringkonstansok lehetővé teszik a szövegben lévő feloldási sorozatok minimalizálását.
  4. Null értékű és nem null értékű típusok: A C# az utótag típushoz való hozzáfűzésével támogatja a null értékű értéktípusokat és a ?. Null értékű típusok esetén a fordító figyelmezteti, ha nem ellenőrzi, hogy null értékű-e a kifejezés, mielőtt használni próbálná azt. A nem nullázható típusok esetén a fordító figyelmezteti, ha esetleg egy null értéket rendelne hozzá ehhez a változóhoz. Ezek a funkciók minimálisra csökkenthetik annak valószínűségét, hogy az alkalmazás System.NullReferenceExceptionhibát okozzon. A szintaxis ismerős lehet abból, hogyan használja a TypeScript a ?-t a választható tulajdonságok esetében.
  5. LINQ: A nyelvvel integrált lekérdezés (LINQ) az adatok lekérdezéséhez és átalakításához általános szintaxist biztosít, függetlenül azok tárterületétől.

Jótanács

Ha többet szeretne megtudni a C#típusrendszeréről ( beleértve class a vs. structgenerikusokat és interfészeket is ), tekintse meg a Típusrendszer áttekintését az Alapok szakaszban.

Ahogy többet tud meg, más különbségek is nyilvánvalóvá válnak, de ezek közül sok kisebb hatókörű.

A JavaScript és a TypeScript néhány ismerős funkciója és kifejezése nem érhető el a C#-ban:

  1. dinamikus típusok: A C# statikus gépelést használ. A változódeklaráció tartalmazza a típust, és ez a típus nem módosítható. Van egy dynamic típus a C#-ban, amely futtatókörnyezeti kötést biztosít.
  2. prototípusalapú öröklődés: A C#-öröklés a típusdeklaráció része. A C#-class deklaráció bármilyen alaposztályt feltüntet. A JavaScriptben a __proto__ tulajdonságot úgy állítja be, hogy bármely példányon beállítsa az alaptípust.
  3. Értelmezett nyelv: A C#-kódot kötelező lefordítani, mielőtt futtatja. A JavaScript-kód közvetlenül a böngészőben futtatható.

Emellett néhány további TypeScript-funkció nem érhető el a C#-ban:

  1. Egyesítő típusok: A C# 15-től kezdődően a C# támogatja az egyesítő típusokat. A uniók zárt esetkészletet határoznak meg, amelyeket egy érték képes képviselni, és a fordító biztosítja az ezekben az esetekben történő teljes mintaegyezést.
  2. dekorátorok: A C#-ban nincsenek dekorátorok. Egyes gyakori dekorátorok, például a @sealed, fenntartott kulcsszóként szerepelnek a C#-ban. Más gyakori dekorátorok is rendelkezhetnek megfelelő attribútumokkal. Más dekorátorok számára saját attribútumokat hozhat létre.
  3. Több megbocsátó szintaxis: A C#-fordító a JavaScript által megköveteltnél szigorúbban elemzi a kódot.

Ha webalkalmazást készít, fontolja meg a Blazor használatát az alkalmazás létrehozásához. A Blazor egy C#-hoz készült teljes veremű webes keretrendszer. A Blazor-összetevők a WebAssembly használatával futtathatók a kiszolgálón, .NET-szerelvényekként vagy az ügyfélen. A Blazor támogatja a kedvenc JavaScript- vagy TypeScript-kódtárakkal való együttműködést.

Következő lépések