Menü Bezárás

Változók, adattípusok a C#-ban

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ípusElfoglalt tárterület és leírásHatárérték
sbyte1 byte, signed, egész számok-128-127
byte1 byte, unsigned, egész számok0- 255
short2 byte, signed, egész számok-32,768-32,767
ushort2 byte, unsigned, egész számok0-65,535
int4 byte, signed, egész számok-2,174,843,648-
2,174,843,647
uint4 byte, unsigned, egész számok0-4,294,967,295
float4 byte, egyszeres pontosságú lebegőpontos szám-1.5 x 10−45
3.4 x 1038
double8 byte, kétszeres pontosságú lebegőpontos szám5.0 × 10−324
1.7 × 10308
decimal16 byte, 28-29 karakteres pontosságú lebegőpontos szám+-1.0 x 10-28
7.9228 x 1028
long8 byte, signed, egész számok-9,223,372,036,854,775,808-
9,223,372,036,854,775,807
ulong8 byte, unsigned, egész számok0-18,446,744,073,709,551,615
Szám adattípusok táblázata

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:

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/integral-numeric-types

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types

Posted in Alapszint, C#

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük