A C# programozási nyelv erősen típusos nyelv. Ez azt jelenti, hogy mindenképpen deklarálnunk kell a változóink típusát már fordítási időben, azaz meg kell határoznunk, hogy a változóink milyen típusú adatot fognak tartalmazni, amikor létrehozzuk a változót.
Változóink tárolhatnak szám, szöveg, logikai típust, illetve objektumokat. A típusok a következő információkat tartalmazhatják:
- A típus eltárolásához szükséges tárhely a memóriában. – Avagy, bizonyos típusok hány byte memóriát foglalnak.
- A minimum illetve a maximum érték, amelyet felvehetnek. Például a számok, vagy egy string (szöveg) számára lefoglalt memóriaterület esetében a karakterek száma.
- Objektumok esetében azok a tagok, melyeket eltárol, mely lehet metódus, mező, event, avagy interfész, amit implementál, esetleg az osztály őse, amelyből leszármazik.
- Memóriában elfoglalt hely címe.
- Műveletek, melyek az adott típuson lehetségesek.
Szám típusok
A szám típusok jellemző tulajdonsága, hogy fix memóriaterületet foglalnak le, ezáltal meghatározható a minimum, illetve maximum értékük, annak függvényében, hogy signed vagy unsigned típust választottunk-e. Az unsigned típusok azt jelentik, hogy nincsen előjelbit megjelölve a tároláskor, így csak pozitív lehet az az adott változó. A signed pedig azt jelenti, hogy meg van jelölve az előjelbit, emiatt egy bittel kevesebb jut arra, hogy eggyel nagyobb, kettes számrendszerbeli számot tudjunk jelölni, cserébe a tartományunk lehet negatív is.
Típus | Elfoglalt tárterület és leírás | Határérték |
---|---|---|
sbyte | 1 byte, signed, egész számok | -128-127 |
byte | 1 byte, unsigned, egész számok | 0- 255 |
short | 2 byte, signed, egész számok | -32,768-32,767 |
ushort | 2 byte, unsigned, egész számok | 0-65,535 |
int | 4 byte, signed, egész számok | -2,174,843,648- 2,174,843,647 |
uint | 4 byte, unsigned, egész számok | 0-4,294,967,295 |
float | 4 byte, egyszeres pontosságú lebegőpontos szám | -1.5 x 10−45– 3.4 x 1038 |
double | 8 byte, kétszeres pontosságú lebegőpontos szám | 5.0 × 10−324– 1.7 × 10308 |
decimal | 16 byte, 28-29 karakteres pontosságú lebegőpontos szám | +-1.0 x 10-28– 7.9228 x 1028 |
long | 8 byte, signed, egész számok | -9,223,372,036,854,775,808- 9,223,372,036,854,775,807 |
ulong | 8 byte, unsigned, egész számok | 0-18,446,744,073,709,551,615 |
Szöveg és logikai típus
Szöveg, text tárolására a string és a char típust használjuk. A char típusban 2 byte-on tárolunk egyetlen karaktert. A string típusban pedig char típusból álló változók sorozatát tároljuk el. Egyetlen string változó maximum 2GB méretű lehet. A string-ek csak olvasható változóknak számítanak memóriakezelés szempontjából. Ha egy string változót megváltoztatunk, egy új memóriaterület kerül lefoglalásra, ezt a viselkedés jellemző az immutable típusokra.
A logikai típus a C#-ban a bool. Értéke értelemszerűen igaz vagy hamis lehet. Egy bájton tárolódik. Alap értéke a hamis.
Jogosan merülhet fel a kérdés, hogy az igaz-hamis állításokat miért 1 byte-on tároljuk, hogyha egyetlen bit is elég lenne a tárolásukhoz? A válasz leegyszerűsítve az, hogy azért, mert a modern processzorok minimum egy byte-on tudnak címezni.
Kapcsolódó bejegyzések
Források: