Megosztás a következőn keresztül:


Ütemterv Java-fejlesztőknek a C tanulásához#

A C# és a Java számos hasonlósággal rendelkezik. A C# elsajátítása során a Java-beli programozásból már meglévő ismeretek nagy részét alkalmazhatja:

  1. Hasonló szintaxis: A Java és a C# is 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 Java és a C. A kapcsos zárójelek és pontosvesszők ismerősek. Az olyan vezérlő utasítások, mint ifa , elseswitch ugyanazok. A , whileés do...while cikluskimutatásai formegegyeznek. Ugyanezek a class interface kulcsszavak mindkét nyelven szerepelnek. A hozzáférési módosítók public private azonosak. Még sok beépített típus is ugyanazokat a kulcsszavakat használja: int, stringés double.
  2. Objektumorientált paradigma: A Java és a C# is objektumorientált nyelv. A polimorfizmus, az absztrakció és a beágyazás fogalmai mindkét nyelven érvényesek. Mindkettő új szerkezeteket adott hozzá, de az alapvető funkciók továbbra is relevánsak.
  3. Erősen gépelt: A Java és a C# is erősen gépelt nyelv. A változók adattípusát explicit módon vagy implicit módon deklarálhatja. A fordító a típusbiztonságot kényszeríti ki. A fordító a kód futtatása előtt észleli a típussal kapcsolatos hibákat a kódban.
  4. Platformfüggetlen: A Java és a C# egyaránt platformfüggetlen. A fejlesztői eszközöket a kedvenc platformján futtathatja. Az alkalmazás több platformon is futtatható. A fejlesztési platform nem szükséges a célplatformhoz való igazodáshoz.
  5. Kivételkezelés: A Java és a C# kivételeket is ad a hibák jelzéséhez. Mindkettő blokkokat használ try - - catchfinally a kivételek kezelésére. A kivételosztályok neve és öröklési hierarchiája hasonló. Az egyik különbség az, hogy a C# nem rendelkezik az ellenőrzött kivételek fogalmával. Bármely módszer (elméletileg) kivételt jelenthet.
  6. Standard kódtárak: A .NET-futtatókörnyezet és a Java Standard Könyvtár (JSL) támogatja a gyakori feladatokat. Mindkettő kiterjedt ökoszisztémákkal rendelkezik más nyílt forráskód csomagokhoz. A C#-ban a csomagkezelő NuGet. Ez a Mavenhez hasonló.
  7. Szemétgyűjtés: Mindkét nyelv automatikus memóriakezelést alkalmaz szemétgyűjtéssel. A futtatókörnyezet visszaszerzi a memóriát a nem hivatkozott objektumokból. Az egyik különbség az, hogy a C# lehetővé teszi értéktípusok létrehozását típusként struct .

A hasonlóságok miatt a C#-ban szinte azonnal hatékonyan dolgozhat. A fejlődés során olyan funkciókat és kifejezéseket kell elsajátítania a C#-ban, amelyek nem érhetők el a Java-ban:

  1. 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. Az is utasítás ellenőrzi, hogy egy változó "is" típusú-e. 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.
  2. 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.
  3. Null értékű és nem null értékű típusok: A C# támogatja a null értékű értéktípusokat, a null értékű referenciatípusokat pedig az ? utótag típushoz való hozzáfűzésével. Null értékű típusok esetén a fordító figyelmezteti, ha nem ellenőrzi null a kifejezést a halasztás előtt. A nem null értékű típusok esetén a fordító figyelmezteti, ha lehet, hogy egy értéket rendel null ehhez a változóhoz. A nem null értékű referenciatípusok minimalizálják azokat System.NullReferenceExceptiona programozási hibákat, amelyek egy .
  4. Bővítménymetelyek: A C#-ban létrehozhat osztályt vagy felületet kiterjesztő metódusokat. A bővítménymetelyek kiterjesztik egy típus viselkedését egy kódtárból, vagy minden olyan típusból, amely egy adott felületet implementál.
  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.
  6. Helyi függvények: A C#-ban függvényeket ágyazhat be metódusokban vagy más helyi függvényekben. A helyi függvények a beágyazás újabb rétegét biztosítják.

A C#-ban vannak olyan funkciók is, amelyek nem java nyelven érhetők el. A nem ismétlődő erőforrások automatikus felszabadítására szolgáló funkciók, például async és await, és using utasítások is megjelennek.

A C# és a Java között vannak olyan hasonló funkciók is, amelyek apró, de fontos különbségekkel rendelkeznek:

  1. Tulajdonságok és indexelők: Mind a tulajdonságok, mind az indexelők (az osztályokat tömbként vagy szótárként kezelik) nyelvi támogatással rendelkeznek. A Java-ban a metódusok elnevezési konvencióit a kezdő és seta get .
  2. Rekordok: A C#-ban a rekordok lehetnek class (hivatkozás) vagy struct (érték) típusúak. A C#-rekordok nem módosíthatók, de nem szükséges, hogy módosíthatók legyenek.
  3. A C# és a Java különböző szintaxist ad meg.
  4. Az attribútumok hasonlóak a Java-széljegyzetekhez.

Végül vannak olyan Java nyelvi funkciók, amelyek nem érhetők el a C#-ban:

  1. Ellenőrzött kivételek: A C#-ban bármely metódus elméletileg bármilyen kivételt okozhat.
  2. Ellenőrzött tömb kovariancia: A C#-ban a tömbök nem biztonságosan kovariánsak. Ha kovariantikus struktúrákra van szüksége, használja az általános gyűjteményosztályokat és interfészeket.

Általánosságban elmondható, hogy a Java-ban tapasztalt fejlesztők számára a C# tanulásának zökkenőmentesnek kell lennie. Elég ismerős idiómát talál, hogy gyorsan hatékony legyen, és gyorsan megtanulhatja az új kifejezéseket.