2. Usporedba s C++ i Javom
U ovom ćemo se poglavlju osvrnuti na razlike između C# i njegova dva najbliža rođaka (C++ i Java). Ponegdje u tekstu navedene su reference na web sjedišta koja dublje obrađuju određenu problematiku te je vrlo korisno posjetiti ih.
[b]C# vs. Java[/b]
C# i Java su jezici najnovije generacije čiji su izravni prethodnici C++ i C. Svaki od njih sadrži napredna svojstva poput Garbage Collection (skupljanje smeća) čime se smanjuje potreba za intervencijama izravno u programskom kodu. Navedeni jezici su sintaktički gotovo isti.
C# i Java izvorne datoteke kompiliraju se u prijelazni jezik: C# u Microsoft Intermediate Language (MSIL), a Java u Java bytecode. U svakom od ovih slučajeva prijelazni jezik se može izvoditi; bilo interpreterom, bilo just-in-time kompilacijom na odgovarajućem virtualnom stroju. Valja naglasiti da je u C# dodatna pozornost posvećena kompilaciji prijelaznog jezika u binarni kod.
C# podržava primitivnije tipove podataka od onih u Javi (poglavlje 4), a omogućuje i stvaranje vlastitih tipova podataka. Na primjer, C# podržava pobrojenja (enumerations), tipski sigurni vrijednosni tipovi podataka koji mogu sadržavati samo konstante, te strukture koje su korisnički definirani tipovi podataka. (poglavlje 11). (Java ne podržava pobrojenja ali ih može simulirati).
Za razliku od Jave, C# ima mogućnost preopterećivanja različitih operatora. Poput Jave, C# ne koristi nasljeđivanje više klasa u korist nasljeđivanja jedne klase što je prošireno nasljeđivanjem više sučelja. Polimorfizam je podržan pomoću nasljeđenih metoda te preopterećenja ili skrivanja metoda bazne klase. C# koristi delegate. To su tipski sigurni pokazivači na metode, a osnovna ima je namjena implementacija upravljanja događajima.
U Javi su višedimenzionalna polja implementirana preko jednodimenzionalnih (polja mogu biti članovi drugih polja). C# pak podržava i takva (zupčasta), ali i pravokutna polja.
Za detaljniju usporedbu C# i Java-e kliknite.
Komparativan pregled C#-a
Microsoft .NET vs. J2EE.
[b]C# vs. C++[/b]
Iako posjeduje neke elemente nasljeđene od Visual Basica i Jave, najbliži rođak C#-a je C++.
Najvažnija razlika između ta dva jezika je to što C# ne sadrži poziv datoteke zaglavlja, što znači da je sav kod «umetnut» u datoteku.
Kao što smo već spomenuli, .NET izvršni sustav u kojem se izvodi C# kod upravlja memorijom te preuzima brigu o zadaćama poput skupljanja smeća (Garbage Collection). Zbog toga je potreba za pokazivačima u C#-u puno manja nego u C++. Pokazivači se mogu doduše koristiti i u C#-u, ali samo u pisanju nesigurnog koda. Preporuča ih se ondje gdje su karakteristike performansi od krucijalne važnosti.
Razumijevanje tipova podataka u C# je znatno kompleksnije od razumijevanja C++ tipova podataka. Svi tipovi podataka u C#-u izvedeni su iz 'object' tipa. Također postoje i razlike u načinu kako se određeni tipovi podataka mogu koristiti. Polja u C#-u su limitirana te stoga nije moguće dodavati elemente nakon što je polje popunjeno.
C# naredbe vrlo su slične C++ naredbama. Spomenut ću samo jednu razliku: naredba switch je promijenjena tako da je zabranjeno nastavljanje slučaja.
Kao što je već spomenuto, C# ne koristi nasljeđivanje više klasa. Ostale razlike kod upotreba klasa su: dodana je podrška svojstvima klasa što je preuzeto iz Visual Basica, a metode se pozivaju pomoću operatora . (točka) umjesto operatora :: (dvije dvotočke).
Za detaljniju usporedbu C# i C++ pogledajte:
C++ & C#: sve što trebate znati za prelazak na C#.
C# iznutra: intervju s Microsoft Chief Architect Anders Hejlsberg.


