SkillsTest.pl C# pytania i zadania rekrutacyjne Jaka jest różnica pomiędzy typami wartościowymi a referencyjnymi?

: 2017-09-07 | Nr 8 z 51

Pytanie

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

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)

Polecamy

Na co możesz wydać swoje 15k?

Zabawki dla dwulatka