C Sharp programozási nyelv

A Wikipédiából, a szabad lexikonból.

A szócikk címe jelenleg technikai okok miatt pontatlan. A helyes cím: C# programozási nyelv.

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, biztonságos módban (safe mode) használható. A legtöbb objektumhozzáférés csak biztonságos hivatkozásokon keresztül tehető meg, és a legtöbb művelet ellenőrzött túlcsordulás szempontjából.
  • 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ód kö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 az, ahol a feladat végrehajtásra kerül. 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:

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.

[szerkesztés] Külső hivatkozások

Főbb programozási nyelvek (továbbiak) +/-

Kereskedelmi: ABAP | Ada | Awk | C | C++ | C# | COBOL | Delphi | Fortran | Java | JavaScript | Lisp | Objective-C | Perl | PHP | PL/SQL | Python | SAS | sh | SQL | Visual Basic

Oktatási: Eiffel | Haskell | Logo | SML | Pascal | Prolog | Scheme | Smalltalk

Történelmi: ALGOL | APL | BASIC | Clipper | MUMPS | PL/I | Simula