W tym i kolejnych postach postaram się przybliżyć wam typy danych, wykorzystywanych w C# do określenia typu zmiennych.

Zanim jednak przejdę do opisu poszczególnych typów, zacznę od takich pojęć jak :

  • “Stos”  
  • “Sterta”.

jaka jest między nimi różnica i do czego są wykorzystywane w programowaniu w C#.

Po pierwsze, i chyba najważniejsze to nie należy tych pojęć mylić ze strukturami do przechowywania danych, możliwych do implementacji w wielu językach. Stos tak samo jak i sterta są częścią pamięci wirtualnej jaka jest przydzielona aplikacji podczas uruchamiania.

Każdy utworzony wątek w aplikacji którą będziemy tworzyć, będzie wykorzystywał osobny stos, idąc za tym oznacza to że jedna aplikacja może mieć ich kilka wątków a tym samym kilka stosów. Na stosie lądują wszelkie zmienne oraz parametry przekazywane do funkcji. 

Z punktu widzenia programisty stos jest pomijany, tzn że pisząc program/aplikacje, nie musimy pamiętać o nim. Porządek na stosie w pewnym sensie utrzymuje system. Deklarując zmienną trafia ona na stos i zostaje z niego usunięta (bądź jak mówią niektórzy, zdjęta), wtedy gdy wypadnie poza klamry zasięgu (lub mówiąc potocznie blok kodu {}).


Sterta jest miejscem w pamięci wirtualnej procesu, gdzie trafiają wszelkie klasy i ich instancje. Ponadto w języku C# na stertę trafiają także interfejsy, tablice ale również delegaty. Sterta jest zarządzana nie przez system operacyjny, a przez wirtualną maszynę .NET. Elementy trafiające na stertę są tworzone operatorem new  którego zasada działania jest bardziej skomplikowana niż zwykła deklaracja zmiennych lądujących na stos. W C# w odróżnieniu od innych podobnych języków typu C++, nie musisz pamiętać o zwalnianiu pamięci, pamięć w C# jest kontrolowany przez garbage collector (tzw. śmietnik) , który ma za zadanie wyszukać puste referencje i je usunąć, tym samym zwalniając miejsce w pamięci.

Na ten moment i poziom mojej wiedzy, nie będę dalej się rozpisywał na temat stery czy stosu, bo nie chciałbym przekazywać wam, informacji nie do końca sprawdzonych bądź też błędnych. A w tym blogu nie o to chodzi.

W każdym bądź razie C# jest językiem, który jest bardzo zautomatyzowany, wiele rzeczy wykonywanych jest poza naszą wiedzą.

Przejdźmy jednak do naszych typów.

Zmienne w C# możemy podzielić na 3 podstawowe rodzaje:

  • wartościowe,
  • referencyjne,
  • wskaźnikowe.

 

Post Author: Csharpowe Zmagania

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.