Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 22710|Svare: 0

[Kilde] Forskjellen mellom struktur og klasse i C#

[Kopier lenke]
Publisert på 24.06.2016 11:53:06 | | |
Den viktigste forskjellen mellom klasse og struct er at klasse er en referansetype, mens struct er en verditype, og deres tildeling i minnet er forskjellig.

Hva er klasse?

Klasse, et grunnleggende konsept innen objektorientert programmering, er en type tilpasset datastruktur som vanligvis inneholder felt, attributter, metoder, attributter, konstruktører, indeksere, operatorer osv. I .NET arver alle klasser til slutt fra System.Object-klassen, så de er en referansetype, det vil si at når du kjenner en instans av en klasse, lagres adressen til den instansen i den administrerte heapen på stakken, og verdien til instansen lagres i den administrerte heapen.

Hva er en struct?

En struct er en verditype som brukes til å organisere et sett med relaterte variabler til en enkelt variabelenhet. Alle strukturer arves fra System.ValueType-klassen, så de er en verditype, det vil si at strukturinstansen opprettes på stakken der tråden er tildelt, og den lagrer selve verdien. Så når vi bruker struct, kan vi behandle det som en grunnleggende typeklasse som int og char.



1. klasse er referansetypen, og structs er verditypen

Siden klasse er en referansetype, kan klasse settes til null. Men vi kan ikke gjøre struct null fordi det er en verditype.




2. Når du instansierer en klasse, vil den bli opprettet på heapen. Og du instansierer en struct, som blir opprettet på stacken

3. Du bruker en referanse til en klasseinstans. Og du bruker ikke en referanse til en struct. (bruk dem heller direkte)

4. Når vi passerer klasse som et argument til en metode, sender vi en referanse. Struct sender en verdi, ikke en referanse.

5. Structs kan ikke ha initialisatorer, klasser kan ha initialisatorer.





6. Klasser kan ha åpenbare parameterløse konstruktører, men Structs kan ikke





7. Det nye nøkkelordet må instansieres før klassen brukes, og Struct trenger det ikke




8. Klasse støtter arv og polymorfisme, Struct gjør det ikke. Merk: Men Struct kan implementere grensesnitt akkurat som klasser

9. Siden Struct ikke støtter arv, kan ikke medlemmene modifiseres med beskyttet eller beskyttet internt

10. Konstruktøren av Klasse trenger ikke å initialisere alle feltene, og konstruktøren av Struct må initialisere alle feltene







11. Klasse kan definere en destruktor, men Struct kan ikke

12. Klasse er egnet for store og komplekse data, og Struct er egnet for nye typer som ofte brukes som en kombinasjon av noen data.



Relevante hendelser: Struct har ytelsesfordeler, og Class har objektorientert utvidelsesfordeler.

Typen som brukes for den underliggende datalagringen er designet som en Struct-type, og typen som brukes til å definere applikasjonsatferd er designet som en Klasse. Hvis du er usikker på hvordan typen skal brukes i fremtiden, bør du bruke Class.




Foregående:Alipay RSA privat nøkkel og offentlig nøkkel ett-klikk genereringsverktøy
Neste:C# reversere en MySQL-hjelpeklasse, lagre den
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com