W C#, tak jak w innych językach obiektowych, mamy typy
proste i referencyjne.
Do typów prostych należą dane liczbowe takie jak: „int”,
„float”, itd., a także typy wyliczeniowe oraz
struktury („string” to struktura, a więc jest typem prostym). Przypisując do
jednej zmiennej prostej jakąś wartość lub wartość z innej zmiennej prostej,
tworzy się kopia. W przypadku referencji nie powstaje kopia danych, lecz kopiuje
się tzw. wskaźnik na dane, czyli wskazanie na jakie dane zmienna wskazuje.
Spróbuję to zobrazować przykładami.