Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 22710|Svar: 0

[Kilde] Forskellen mellem struct og klasse i C#

[Kopier link]
Opslået på 24/06/2016 11.53.06 | | |
Den mest væsentlige forskel mellem klasse og struct er, at klasse er en referencetype, mens struct er en værditype, og deres tildeling i hukommelsen er forskellig.

Hvad er klasse?

klasse, et grundlæggende begreb inden for objektorienteret programmering, er en type brugerdefineret datastruktur, der typisk indeholder felter, attributter, metoder, attributter, konstruktører, indeksere, operatorer osv. I .NET arver alle klasser i sidste ende fra System.Object-klassen, så de er en referencetype, det vil sige, når du kender en instans af en klasse, gemmes adressen på den pågældende instans i managed heap på stakken, og værdien af instansen gemmes i managed heap.

Hvad er en struct?

En struct er en værditype, der bruges til at organisere et sæt relaterede variable i en enkelt variabelenhed. Alle strukturer arves fra System.ValueType-klassen, så de er en værditype, dvs. strukturinstansen oprettes på den stak, hvor tråden er tildelt, og den gemmer selve værdien. Så når vi bruger struct, kan vi behandle det som en grundlæggende typeklasse såsom int og char.



1. klasse er referencetypen, og structs er værditypen

Da klasse er en referencetype, kan klassen sættes til null. Men vi kan ikke gøre struct null, fordi det er en værditype.




2. Når du instansierer en klasse, vil den blive oprettet på heap'en. Og du instansierer en struct, som vil blive skabt på stacken

3. Du bruger en reference til en klasseinstans. Og du bruger ikke en reference til en struct. (brug dem i stedet direkte)

4. Når vi består klasse som et argument til en metode, sender vi en reference. Struct sender en værdi, ikke en reference.

5. Structs kan ikke have initializere, klasser kan have initializers.





6. Klasser kan have åbenlyse parameterløse konstruktører, men Structs kan ikke





7. Det nye nøgleord skal instansieres, før klassen bruges, og Struct behøver det ikke




8. Klasse understøtter arv og polymorfi, Struct gør ikke. Bemærk: Men Struct kan implementere interfaces ligesom klasser

9. Da Struct ikke understøtter arv, kan dets medlemmer ikke ændres med beskyttet eller beskyttet internt

10. Konstruktøren af Klasse behøver ikke at initialisere alle felter, og konstruktøren af Struct skal initialisere alle felter







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

12. Klasse er egnet til store og komplekse data, og Struct er egnet til nye typer, der ofte bruges som en kombination af nogle data.



Relevante Tilfælde: Struct har ydelsesfordele, og Class har objektorienteret udvidelsesfordele.

Typen, der bruges til det underliggende datalager, er designet som en Struct-type, og typen, der bruges til at definere applikationsadfærd, er designet som en Klasse. Hvis du er usikker på den fremtidige anvendelse af typen, bør du bruge Class.




Tidligere:Alipay RSA privat nøgle og offentlig nøgle et-klik genereringsværktøj
Næste:C# reverse en MySQL hjælpeklasse, gem den
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com