Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 22710|Răspunde: 0

[Sursă] Diferența dintre struct și clasă în C#

[Copiază linkul]
Postat pe 24.06.2016 11:53:06 | | |
Cea mai esențială diferență dintre class și struct este că class este un tip de referință, în timp ce struct este un tip value, iar alocarea lor în memorie este diferită.

Ce este clasa?

Clasa, un concept fundamental în programarea orientată pe obiecte, este un tip de structură de date personalizată care conține de obicei câmpuri, atribute, metode, atribute, constructori, indexatori, operatori etc. În .NET, toate clasele moștenesc în cele din urmă de la clasa System.Object, deci sunt un tip de referință, adică atunci când ai o instanță a unei clase, adresa acelei instanțe din heap gestionat este stocată pe stack, iar valoarea instanței este stocată în heap administrat.

Ce este un struct?

O structură este un tip de valoare folosit pentru a organiza un set de variabile înrudite într-o singură entitate variabilă. Toate structurile sunt moștenite din clasa System.ValueType, deci sunt un tip de valoare, adică instanța struct este creată pe stivulă unde este atribuit firul și stochează valoarea în sine. Așadar, când folosim struct, îl putem trata ca pe o clasă de tip de bază, cum ar fi int și char.



1. clasa este tipul de referință, iar structs este tipul de valoare

Deoarece clasa este un tip de referință, clasa poate fi setată ca nulă. Dar nu putem face struct-ul nul pentru că este un tip de valoare.




2. Când instanțiezi o clasă, aceasta va fi creată pe heap. Și instanțiezi un struct, care va fi creat pe stivă

3. Folosești o referință la o instanță de clasă. Și nu folosești o referință la un struct. (în schimb, folosește-le direct)

4. Când trecem clasa ca argument către o metodă, trecem o referință. Struct transmite o valoare, nu o referință.

5. structurile nu pot avea inițializatoare, clasele pot avea inițializatoare.





6. Clasele pot avea constructori fără parametri evidenți, dar Struct-urile nu pot





7. Noul cuvânt-cheie trebuie instanțiat înainte ca clasa să fie folosită, iar Structul nu are nevoie de acesta




8. Clasa susține moștenirea și polimorfismul, Struct nu. Notă: Dar Struct poate implementa interfețe la fel ca clasele

9. Deoarece Struct nu suportă moștenirea, membrii săi nu pot fi modificați cu Internal protejat sau protejat

10. Constructorul lui Class nu trebuie să inițializeze toate câmpurile, iar constructorul lui Struct trebuie să inițializeze toate câmpurile







11. Clasa poate defini un distrugător, dar Struct nu poate

12. Clasa este potrivită pentru date mari și complexe, iar Struct este potrivită pentru tipuri noi care sunt adesea folosite ca o combinație a unor date.



Ocazii aplicabile: Struct are avantaje de performanță, iar Class are avantaje de extensie orientate pe obiecte.

Tipul folosit pentru depozitul de date de bază este conceput ca un tip Struct, iar tipul folosit pentru a defini comportamentul aplicației este conceput ca o Clasă. Dacă nu ești sigur de aplicarea viitoare a tipului, ar trebui să folosești Class.




Precedent:Alipay RSA pentru generarea cheii private și chei publice cu un singur click
Următor:C# inversează o clasă de ajutor MySQL, salvează-o
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com