W C#, jak w każdym języku programowania, mamy coś takiego jak zmienne i typy.

Zmienne są to  reprezentacje wartości jakiegoś typu w pamięci komputera.

W zmiennych można przechowywać jakieś wartości np. w zmiennej o nazwie “imie” można przechowywać wartość “Ala ma kota”, a w zmiennej o nazwie “wiek” można przechowywać liczbę 18. Każda zmienna musi być jakiegoś typu.

W C# typy zmiennych można podzielić na:

  • Typy wartościowe
    • Typy proste
    • Typy wyliczeniowe
    • Typy struktur
    • Typy wartości null
    • Typy wartości touple
  • Typy referencyjne
    • Klasy
    • Interface
    • Listy(Array)
    • Delegaty

Dzisiaj chcę się skupić na typach prostych, które na powyższej liście są pogrubione.

Typy liczb całkowitych

TypOpisWielkość zajmowanej pamięci w komputerze.Net typ
sbyteMoże przyjmować wartości liczbowe od -128 do 127 8 bitów System.SByte
byteMoże przyjmować wartości liczbowe od 0 do 255 8 bitów System.Byte
short Może przyjmować wartości liczbowe od -32 768 do 32 767 16 bitów System.Int16
ushort Może przyjmować wartości liczbowe od 0 do 65 535 16 bitów System.UInt16
int Może przyjmować wartości liczbowe od -2.147.483.648 do 2.147.483.647 32 bity System.Int32
uintMoże przyjmować wartości liczbowe od 0 do 4 294 967 295 32 bity System.UInt32
long Może przyjmować wartości liczbowe od -9.223.372.036.
854.775.808
do 9.223.372.036.
854.775.807
64 bity System.Int64
ulong Może przyjmować wartości liczbowe od 0
do 18.446.744.073.
709.551.615
64 bity System.UInt64

To teraz czas na przykład 🙂

Jeżeli w naszym programie chcemy mieć zmienną, w której będziemy przechowywać np. wiek człowieka możemy użyć np.

Sbyte wiekCzłowieka = 18;

Byte wiekCzłowieka = 18;

Int wiekCzłowieka = 18;

Itd.

Jeżeli wiemy, że człowiek nie ma ujemnego wieku i nie żyje 1000 lat użycie sbyte, które pozwala na ujemne wartości czy int, który potrafi przyjąć liczbę nawet 2.147.483.647 jest nie do końca optymalne. W tym wypadku najlepiej byłoby użyć Byte, ponieważ jest najbliżej naszej wartości. Dodatkowo załóżmy, że w naszym programie potrzebujemy 10 000 zmiennych. Jeżeli każda z nich będzie typu Byte, nasz program będzie potrzebował około 9kB pamięci. Jeżeli użyjemy zmiennych typu Int, wtedy nasz program zajmie  około 40kB. Jak widać ten sam program, ale potrzebuje 4 razy więcej miejsca w pamięci. Warto o tym pamiętać podczas pisania programów.

Typy liczb zmiennoprzecinkowych

TypOpis Wielkość zajmowanej pamięci w komputerze .Net typ
float Może przyjmować wartości liczbowe od
±1,5 x 10−45 do ±3,4 x 1038
4 bajty System.Single
double Może przyjmować wartości liczbowe od
±5,0 × 10−324 do ±1,7 × 10308
8 bitów System.Double
decimal Może przyjmować wartości liczbowe od
±1,0 x 10-28 do ±7,9228 x 1028
16 bitów System.Decimal

W zmiennych tego typu można przechowywać np. wartości walutowe lub wynik operacji, który jest po przecinku np.

Double wynik = 5 / 2;

double a = 12.3;

TypOpis Wielkość zajmowanej pamięci w komputerze .Net typ
bool Wartość logiczna, która może przechowywać true  albo false 1 bit System.Boolean

Można użyć tego  typu zmiennych np. w

CzyJestesWysoki = false;

CzyLubiszCzytacTenBlog = true;

Typ OpisWielkość zajmowanej pamięci w komputerze .Net typ
Char Może przechowywać dowolny znak 16 bitów System.Char
String Ciąg znaków Unicode System.String

W zmiennych tego typu można przechowywać pojedyńcze znaki lub ciągi znaków np.

Char litera = ‘a’;

String imie = “Ala”;

String zwierze = “Kot”;

String wiek = “18”;

W tej zmiennej można też przechowywać oczywiście liczby, ale są one traktowane jako ciąg znaków, a nie liczba.

Co to znaczy?

Przykład:

String wiekAni = “18”;

String wiekTomka = “20”;

String wiekObu = wiekAni + wiekTomka;

W zmiennej wiek dostaniemy “1820”; ponieważ obie wartości to napisy, więc zostały zlepione w jedno gdybyśmy wieli zmienne typu byte.

byte wiekAni = 18;

byte wiekTomka = 20;

byte wiekObu = wiekAni + wiekTomka;

W wyniku dostaniemy 38.

To na tyle dzisiaj. W kolejnych wpisach będę poruszał kolejne typy zmiennych jakie występują w C#.