Manual c #, structura

După cum ar trebui să știi deja, clase sunt tipuri de date de referință. Aceasta înseamnă că o anumită clasă de obiecte sunt disponibile pe link-ul, spre deosebire de valorile de tipuri simple sunt disponibile în mod direct. Dar, uneori, accesul direct la obiecte la valorile de tipuri simple, este util să aibă, de exemplu, în scopul de a spori eficiența programului. La urma urmei, fiecare acces la obiecte (chiar și cea mai mică) link-ul este asociat cu costuri suplimentare pentru consumul de resurse de calcul și de memorie RAM.

Pentru a rezolva astfel de dificultăți în C # structura este asigurată. care este similar cu o clasă, dar este un tip de valoare, mai degrabă decât tipul de date de referință. Ie structuri diferă de la clasele de modul în care sunt stocate în memorie și cum este accesat (clase - un tipuri de referință sunt plasate în structura heap - tipuri de valori plasate pe stiva), precum și unele proprietăți (de exemplu, structuri nu suport moștenire) . Din motive de performanță, veți utiliza structura pentru tipuri de date mai mici. Cu toate acestea, în ceea ce privește structura sintaxa este foarte similar cu clase.

în care numele desemnează un anumit nume de structură.

Ca și în clase, fiecare structură are propriile membri: metode, câmpuri, indexatorii, proprietăți, metode și evenimente operatorului. Structurile de asemenea, a permis designerilor să definească, dar nu și destructori. În același timp, structura nu poate fi determinată implicit constructor (adică, proiectantul fără parametri). Faptul că constructorul, numit implicit definit pentru toate structurile în mod automat și nu pot fi modificate. Acest constructor inițializează valori ale structurii câmpului definit în mod implicit. Și pentru că structura nu acceptă moștenirea, membrii lor nu pot fi specificate ca un rezumat, virtuale sau protejate.

structura obiectului poate fi creat cu ajutorul noului operator, în același mod ca și clasa de obiect, dar acest lucru nu este absolut necesar. La urma urmei, atunci când se utilizează noul operator, constructorul este numit, implicit. Și când acest operator nu este utilizat, obiectul este încă creat, dar nu inițializată. În acest caz, inițializarea tuturor membrilor structurii va trebui să fie făcut manual.

Să ne uităm la un exemplu de utilizare a structurilor:

Prin urmare, dacă în exemplul anterior a fost utilizat în locul UserInfo structura de clasă pentru a obține următoarele rezultate:

numirea structurilor

În legătură cu cele de mai sus, există o întrebare rezonabilă: de ce în C # este inclusă structura dacă are abilități mai modeste decât o clasă? Răspunsul la această întrebare este de a îmbunătăți programele de eficiență și performanță. Structurile sunt tipuri de valoare, astfel încât acestea să poată funcționa în mod direct, mai degrabă decât prin referință. Prin urmare, pentru a lucra cu structura nu are nevoie de o variabilă de tip referință, ceea ce înseamnă că, în unele cazuri, economii substanțiale de memorie.

Mai mult decât atât, de lucru cu structura să nu se deterioreze performanța și caracteristica pentru a se referi la obiectul de clasă. După accesul la structura este efectuată în mod direct, ca obiecte - această legătură, deoarece clasele sunt în funcție de tipul de acces. acces indirect la obiecte presupune costuri suplimentare de resurse de calcul pentru fiecare astfel de acces, în timp ce un apel la structurile nu implică astfel de costuri. Și oricum, dacă ai nevoie doar pentru a menține grupul de date au legătură între ele, care nu necesită tratament și moștenirea legătură, din punct de vedere al performanței este mai bine pentru ei de a alege structura.

Interesant, în C ++ are, de asemenea, structura și utilizează struct cuvinte cheie. Cu toate acestea, aceste structuri sunt diferite de cele care sunt disponibile în C #. De exemplu, în C ++ structură se referă la un tip de clasă, ceea ce înseamnă că structura și clasa în această limbă este aproape egal și diferă doar prin accesul implicit la ei de la alți membri, care sunt închise pentru clasa si deschis la structura. O structură în C # se referă la tipul de valori, în timp ce clasa - pentru tipul de referință.

articole similare