Tipurile de valori și tipurile de date de referință c #

acord

Acord privind prelucrarea datelor cu caracter personal

Tipurile de valori și tipurile de date de referință C #

Tipurile de date din C # sunt împărțite în tipuri de valori și tipuri de referință.

  • întreg;
  • Punctul mobil;
  • zecimal;
  • logică;
  • structuri;
  • Listarea.

Diferența dintre ele este că tipurile de valori stochează datele. și tipurile de referință sunt referințe la date. Variabilele lor sunt alocate în diferite zone de memorie alocate programului, numite o stivă și un heap.

Ce este stiva și mormanul

O stivă este o structură de date secvențială în care fiecare element adăugat ulterior este adăugat la sfârșit. În C #, aceasta funcționează după cum urmează: atunci când programul este pornit, o zonă continuă este rezervată în memoria alocată în care este plasat indicatorul final al stiva. Noile date (de exemplu, când variabila este inițializată) sunt plasate la sfârșitul teancului, iar pointerul este mutat.

În acest exemplu, atunci când se execută metoda Metoda de eșantionare, variabilele x, a și y și valorile lor vor fi adăugate alternativ în stivă. Când metoda este terminată, memoria în care sunt stocate datele despre aceste variabile va fi șters și indicatorul stivă va fi mutat din nou.

Diferența dintre o valoare și o referință

În plus față de utilizarea diferitelor domenii de date, tipurile de valori și referințele au o altă diferență extrem de importantă, care se explică cel mai ușor prin exemplul:

De unde provin astfel de valori ale variabilelor a, b, c și d? Dar de aceea cl1.x a devenit 3, pentru că l-am atribuit 1? Aceasta este esența diferenței de valori și referințe în C #.

Când folosim operația de atribuire pentru variabilele de tip de valoare, datele sunt rescrise în zona lor de memorie, iar variabilele în sine nu sunt conectate în nici un fel, iar modificările ulterioare nu se afectează reciproc.

Dar atunci când atribuim cl2 = cl1, s-au întâmplat următoarele: cl2 a început să se îndrepte spre aceeași zonă de memorie ca cl1. dar datele menționate anterior de cl2. au fost îndepărtate de colectorul de gunoi din cauza lipsei de referințe.

Deoarece cl1 și cl2 se îndreaptă acum spre aceeași zonă, este posibil să interacționăm cu datele în el în același mod prin ambele variabile. Datele stocate în acest domeniu vor fi șterse numai atunci când ambele linkuri sunt șterse, ceea ce se va întâmpla cu siguranță după finalizarea metodei.

Crearea de variabile în limbajul de programare C #

Articole similare