Typy danych
Dzisiaj nieco o podstawach a dokładniej o podstawowych typach danych :
- Value Types – typy wartości, które opiszę dzisiaj.
- Reference types – typy referencyjne.
- Pointer types – wskaźniki, czyli coś co było często wykorzystywane w C++, ale nie zdarzyło mi się korzystać w C#.
Value Types
Typy wartościowe to typy dziedziczące po System.ValueType, i po których nie możemy dalej dziedziczyć. Typy wartości są często nazywane typami prostymi. Przechowywane są na stosie i każde ich użycie przekazuje kopię takiego obiektu do wywołania. Tak więc w celu modyfikacji zmiennej w metodzie (co ogólnie nie jest dobrym pomysłem) musimy wykorzystać słowo kluczowe ref, o czym możemy poczytać tutaj.
Wartość zmiennych value type zapisywana jest bezpośrednio na stosie, przez co muszą one mieć wartość.
Do typów value types należą:
- Enum – wszelkiego rodzaju enumeracje
- Struktury:
- Typu całkowitego -sbyte, byte, int, uint, char, short, ushort, long, ulong
- Zmiennoprzecinkowe – float oraz double
- Dziesiętne – decimal
- Binarne – bool
- Struktury definiowane przez użytkownika
O strukturach i ich definiowaniu napisze w przyszłości.
Reference Types
Typy referencyjne to typy dziedziczące bezpośrednio po System.Object. Obiekty przechowywane są w dwóch miejscach, na stosie przechowywany jest wskaźnik (referencja) do obiektu przechowywanego na stercie. Zatem, jeśli dwie zmienne posiadają referencje na ten sam obiekt modyfikacja jednej zmiennej wpływa również na tą drugą zmienną. Do zmiennych referencyjnych należą wszystkie klasy, interfejsy czy delegaty, jak również łańcuchy znakowe (string) oraz obiekty System.Object.
Pointer Types
Typy wskaźnikowe, przepraszam ale nigdy z nich nie miałem okazji korzystać i nie jestem w stanie o nich nic powiedzieć. Mogę jedynie odesłać do źródła i mieć nadzieję, że będzie to pomocne.