C Sharp
A Wikipédiából, a szabad enciklopédiából.
- A szócikk címe technikai okok miatt pontatlan. A helyes cím: C#.
A C# (kiejtése: szí-shárp, esetenként cisz) a Microsoft által a .NET keretrendszer részeként kifejlesztett objektum-orientált programozási nyelv. A nyelv alapjául a C++ és a Java szolgált. A C#-ot úgy tervezték, hogy meglegyen az egyensúly a fejlesztő nyelvi szabadsága és a gyors alkalmazásfejlesztés lehetősége között.
Tartalomjegyzék |
[szerkesztés] Nyelvi lehetőségek
A C# az a programozási nyelv, ami a legközvetlenebb módon tükrözi az alatta működő, minden .NET programot futtató .NET keretrendszert, valamint erősen függ is attól: nincsen nem menedzselt, natív módban futó C# program. A primitív adattípusai objektumok, a .NET típusok megfelelői. Szemétgyűjtést használ, valamint az absztrakcióinak többsége (osztályok, interfészek, delegáltak, kivételek...) a .NET futtatórendszert használja közvetlen módon.
A C vagy C++ nyelvhez hasonlítva a C# több korlátozást és továbbfejlesztést is tartalmaz. A lehetőségei közül néhány:
- A mutatók és a nem ellenőrzött aritmetika csak egy speciális, nem biztonságos módban (unsafe mode) használható. A legtöbb objektumhozzáférés csak biztonságos hivatkozásokon keresztül tehető meg, és az aritmetikai műveletek debug módban túlcsordulás szempontjából ellenőrzöttek.
- Az objektumok nem szabadíthatók fel közvetlen módon, ehelyett a szemétgyűjtő szabadítja fel őket, mikor már nincs rájuk hivatkozás. Ez a módszer kizárja a nem létező objektumokra való hivatkozás lehetőségét.
- A destruktorok nem elérhetőek. A legközelebbi megfelelőjük az IDisposable interfész, ami a using blokkal együtt kikényszerítheti az azonnali felszabadítást. A finalizerek szintén rendelkezésre állnak, de nem váltanak ki azonnali felszabadítást.
- A nyelv csak egyszeres öröklődést támogat, de egy osztály több interfészt is megvalósíthat.
- A C# sokkal típusbiztosabb, mint a C++. Az egyetlen implicit konverzió a biztonságos konverzió, úgy mint az egészek tágabb intervallumba konvertálása vagy a leszármazott osztályok alaposztályba konvertálása. Nincs implicit konverzió az egészek és a logikai típus (boolean) között, a felsorolás tagok és az egészek között. Nincsenek void mutatók (bár az Object osztályra mutató mutatók hasonlóak), valamint bármely, a felhasználó által definiált implicit konverziót explicit módon meg kell jelölni.
- A tömbdeklaráció szintaxisa eltérő (int[] a = new int[5] az int a[5] helyett).
- A felsorolás adattagjai a saját névterükben helyezkednek el.
- A C# 1.x nem rendelkezik template-ekkel, de a C# 2.0 már rendelkezik generics-ekkel.
- Tulajdonságok (Properties) használhatók, amelyek úgy tesznek lehetővé kódfuttatást mezők beállításakor és olvasásakor, mintha mezőhozzáférés történne.
- Teljes reflexió elérhető.
[szerkesztés] Kódkönyvtárak
A legtöbb programozási nyelvtől eltérően a C# megvalósítások nem rendelkeznek önálló, eltérő osztály- vagy függvénykönyvtárakkal. Ehelyett a C# szorosan kötődik a .NET keretrendszerhez, amitől a C# kapja a futtató osztályait és függvényeit. A .NET keretrendszer osztálykönyvtárat tartalmaz, ami a .NET nyelvekből felhasználható egyszerű feladatok (adat reprezentáció és szöveg manipuláció) végrehajtásától kezdve a bonyolult (dinamikus ASP.NET weblapok generálása, XML feldolgozás és reflekció) feladatokig. A kód névterekbe van rendezve, mely a hasonló funkciót ellátó osztályokat fogja össze. Például System.Drawing a grafikai, System.Collections az adatstruktúra és System.Windows.Forms a Windows Forms funkciókat fogja össze.
További rendezési szint a szerelvény (assembly). Egy szerelvény állhat egy fájlból, vagy több összelinkelt fájlból (az al.exe segítségével), ami több névteret és objektumot tartalmazhat. A különböző feladatokhoz szükséges osztályokat szerelvények (például System.Drawing.dll, System.Windows.Forms.dll) hivatkozásával vagy a központi könyvtár (mscorlib.dll a Microsoft megvalósításában)használatával érhetik el a programok.
[szerkesztés] Példa
Egy egyszerű C# program:
public class ExampleClass { public static void Main() { System.Console.WriteLine("Helló világ!"); } }
A program megjeleníti a Helló világ! szöveget a konzolon. A program részletei a következők:
public class ExampleClass
Ez az osztálydeklaráció. Publikus, azaz bármely más projekt szabadon használhatja az osztályt. Az összes információ a kapcsos zárójelek között az osztály leírását szolgálja.
public static void Main()
Ez a program belépési pontja, ahol a program végrehajtása megkezdődik.
System.Console.WriteLine("Helló világ!");
Ez rész felel meg a feladat végrehajtásának. A Console egy rendszerobjektum, ami egy parancssort jelképez. A Console objektum WriteLine metódusának meghívása a paraméterként átadott szöveget kiírja a parancssorba.
[szerkesztés] Szabványosítás
A Microsoft benyújtotta a C# nyelvi specifikáció az ECMA-hoz formális szabványosításra. 2001 decemberében az ECMA kiadta az ECMA-334 C# Language Specification szabványt. 2003-ban a C# ISO szabvány lett (ISO/IEC 23270). Több független megvalósítás is folyamatban van, többek között:
- Mono, a Ximian nyílt forráskódú .NET implementációja
- dotGNU és a Portable.NET a Free Software Foundation-tól
Nemrég a Microsoft a Visual Studio 2005 béta változatában hozzáadta a C#-hoz a generics és a részleges típusok támogatását több új funkcióval egyetemben. Ezen új fukciók szabványosítását megkezdték, de még nem része az ECMA vagy ISO szabványnak.
- C# Online.NET - a szabad enciklopédiából (en)
- C# Language Specification - online, hyperlinked version (en)
- Baltie – C# IDE for children and young Baltie
[szerkesztés] Külső hivatkozások
Főbb programozási nyelvek (továbbiak) |
Imperatív: Fortran • C • C++ • C# • Java • Pascal • Delphi • Ada Script: JavaScript • Visual Basic • PHP • Python • Perl • sh Funkcionális: Haskell • Lisp • Scheme Egyéb: ABAP • Awk • COBOL • PL/SQL • SAS • SQL • Eiffel • Logo • Scratch • SML • Smalltalk |
Történelmi: ALGOL • APL • BASIC • Clipper • MUMPS • PL/I • RPG • Simula |