Kategoria: C# Dodane przez marcin90

Jaka jest różnica pomiędzy typami wartościowymi a referencyjnymi?

1 odpowiedź

2 0 Dodane 10-06-2018 przez marcin90

Najważniejszą różnicą jest to, że wszystkie typy wartościowe trzymają dane na stosie, a referencyjne na stercie. Na stosie trzymany jest jedynie wskaźnik (referencja) do obszaru pamięci na stercie, gdzie przechowywane będą wartości dla stworzonego typu referencyjnego. Gdy zmienimy wartość typu referencyjnego, zmieni się wartość wszystkich zmiennych trzymających referencję do niej.

Tworząc typ referencyjny nigdy nie wiemy ile miejsca zajmie dany obiekt. W przypadku typów wartościowych znamy tę informację w momencie zadeklarowania. Na przykład w przypadku typu double będzie to 8 bajtów.

Kopiując type referencyjne nie możemy korzystać z operatora przypisania tak jak w przypadku typów wartościowych.

Typy wartościowe dziedziczą po klasie Object.ValueType natomiast referencyjne bezpośrednio po klasie Object.

  • byte
  • char
  • bool
  • int
  • double
  • long
  • struktury
  • enum

  • klasy
  • interfejsy
  • delegaty
  • instancje
  • tablice
  • łańcuchy znaków (string)


Dodaj swoją wersję odpowiedzi

Dodajesz odpowiedź jako gość. Zaloguj się się by uzyskać dostęp do rankingu oraz powiadomień.