Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 22710|Antwort: 0

[Quelle] Der Unterschied zwischen Struktur und Klasse in C#

[Link kopieren]
Veröffentlicht am 24.06.2016 11:53:06 | | |
Der wesentlichste Unterschied zwischen Klasse und Struct besteht darin, dass Klasse ein Referenztyp ist, während Struct ein Wertetyp ist und ihre Zuteilung im Speicher unterschiedlich ist.

Was ist Klasse?

Klasse, ein grundlegendes Konzept in der objektorientierten Programmierung, ist eine Art benutzerdefinierter Datenstruktur, die typischerweise Felder, Attribute, Methoden, Attribute, Konstruktoren, Indexierer, Operatoren usw. enthält. In .NET erben letztlich alle Klassen von der System.Object-Klasse, sie sind also ein Referenztyp, das heißt, wenn man eine Instanz einer Klasse kennt, wird die Adresse dieser Instanz im verwalteten Heap auf dem Stack gespeichert und der Wert der Instanz im verwalteten Heap.

Was ist ein Struct?

Eine Struktur ist ein Werttyp, der verwendet wird, um eine Menge verwandter Variablen zu einer einzigen Variablenentität zu organisieren. Alle Strukturen werden von der System.ValueType-Klasse übernommen, also sind sie ein Werttyp, d. h. die Strukturinstanz wird auf dem Stack erstellt, in dem der Thread zugewiesen ist, und speichert den Wert selbst. Wenn wir also Struct verwenden, können wir sie als Basis-Typklasse wie int und char behandeln.



1. klasse ist der Referenztyp, und structs ist der Werttyp

Da die Klasse ein Referenztyp ist, kann die Klasse auf null gesetzt werden. Aber wir können Struct nicht null machen, weil es ein Werttyp ist.




2. Wenn du eine Klasse instanziierst, wird sie auf dem Heap erstellt. Und du instanziierst eine Struktur, die auf dem Stack erstellt wird

3. Du verwendest eine Referenz auf eine Klasseninstanz. Und du benutzt keine Referenz auf eine Struktur. (benutze sie stattdessen direkt)

4. Wenn wir die Klasse als Argument an eine Methode weitergeben, geben wir eine Referenz weiter. Struct übergibt einen Wert, keine Referenz.

5. Strukturen können keine Initialisierer haben, Klassen können Initialisierer haben.





6. Klassen können offensichtliche parameterlose Konstruktoren haben, aber Structs nicht





7. Das neue Schlüsselwort muss instanziiert werden, bevor die Klasse verwendet wird, und die Struct benötigt es nicht




8. Klasse unterstützt Vererbung und Polymorphie, Struct nicht. Hinweis: Aber Struct kann Schnittstellen genau wie Klassen implementieren

9. Da Struct keine Vererbung unterstützt, können seine Mitglieder nicht mit geschützten oder geschützten Internen modifiziert werden

10. Der Konstruktor von Klasse muss nicht alle Felder initialisieren, und der Konstruktør von Struct muss alle Felder initialisieren







11. Klasse kann einen Destruktor definieren, Struct jedoch nicht

12. Klasse ist für große und komplexe Daten geeignet, und Struct eignet sich für neue Typen, die oft als Kombination einiger Daten verwendet werden.



Anwendbare Fälle: Struct hat Leistungsvorteile, und Class bietet objektorientierte Erweiterungsvorteile.

Der für den zugrundeliegenden Datenspeicher verwendete Typ ist als Struct-Typ konzipiert, und der Typ, der zur Definition des Anwendungsverhaltens verwendet wird, ist als Klasse konzipiert. Wenn Sie sich über die zukünftige Anwendung des Typs unsicher sind, sollten Sie Klasse verwenden.




Vorhergehend:Alipay RSA-Privatschlüssel und öffentliches Schlüssel-Ein-Klick-Generierungstool
Nächster:C# eine MySQL-Hilfeklasse rückgängig machen, speichern Sie sie
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com