Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 22710|Svar: 0

[Källa] Skillnaden mellan struktur och klass i C#

[Kopiera länk]
Publicerad på 2016-06-24 11:53:06 | | |
Den mest väsentliga skillnaden mellan klass och struktur är att klass är en referenstyp, medan struktur är en värdetyp, och deras tilldelning i minnet är olika.

Vad är klass?

Klass, ett grundläggande begrepp inom objektorienterad programmering, är en typ av anpassad datastruktur som vanligtvis innehåller fält, attribut, metoder, attribut, konstruktörer, indexerare, operatorer med mera. I .NET ärver alla klasser slutligen från System.Object-klassen, så de är en referenstyp, det vill säga, när du känner till en instans av en klass, lagras adressen till den instansen i den hanterade heapen på stacken, och instansens värde lagras i den hanterade heapen.

Vad är en struct?

En struct är en värdetyp som används för att organisera en uppsättning relaterade variabler till en enda variabelentitet. Alla strukturer ärvs från System.ValueType-klassen, så de är en värdetyp, det vill säga strukturinstansen skapas på stacken där tråden är tilldelad, och den lagrar värdet självt. Så när vi använder struct kan vi behandla den som en grundläggande typklass som int och char.



1. klass är referenstypen, och structs är värdetypen

Eftersom klass är en referenstyp kan klassen sättas till null. Men vi kan inte göra struct null eftersom det är en värdetyp.




2. När du instansierar en klass skapas den på heapen. Och du instansierar en struct, som skapas på stacken

3. Du använder en referens till en klassinstans. Och du använder inte en referens till en struct. (använd dem istället direkt)

4. När vi klarar klass som argument till en metod, skickar vi en referens. Struct skickar ett värde, inte en referens.

5. Structs kan inte ha initialiserare, klasser kan ha initializers.





6. Klasser kan ha uppenbara parameterlösa konstruktorer, men strukturer kan inte





7. Det nya nyckelordet måste instansieras innan klassen används, och Struct behöver det inte




8. Klass stöder arv och polymorfism, Struct gör det inte. Notera: Men Struct kan implementera gränssnitt precis som klasser

9. Eftersom Struct inte stödjer arv kan dess medlemmar inte modifieras med skyddad eller skyddad intern

10. Konstruktören av Class behöver inte initiera alla fält, och konstruktorn av Struct måste initiera alla fält







11. Klass kan definiera en destruktor, men Struct kan inte

12. Klass är lämplig för stora och komplexa data, och Struct är lämplig för nya typer som ofta används som en kombination av viss data.



Tillämpliga tillfällen: Struct har prestandafördelar och Class har objektorienterad extension.

Typen som används för den underliggande datalagringen är designad som en Struct-typ, och typen som används för att definiera applikationsbeteende är designad som en Klass. Om du är osäker på hur typen kommer att användas i framtiden, bör du använda Class.




Föregående:Alipay RSA privat nyckel och verktyg för generering av publik nyckel med ett klick
Nästa:C# reverse en MySQL-hjälpklass, spara den
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com