Heim > Artikel > Backend-Entwicklung > C#-Struktur vs. Klasse
Wie der Name schon sagt, verwendet C# das Schlüsselwort „struct“, um die Werttypen zu definieren, und Class verwendet das Schlüsselwort „class“, um die Referenztypen zu definieren. In C# werden die in der Struktur definierten Variablen im Stapel oder im angegebenen Variablentyp gespeichert und die Instanzen werden als Strukturvariable aufgerufen. Bei einer „Klasse“ hingegen werden die Instanzen als Objekte bezeichnet und in einer Heap-strukturierten Speichereinheit gespeichert. In Bezug auf Konstruktoren und Destruktoren kann die C#-Struktur keinen Destruktor haben, eine Klasse kann jedoch einen Destruktor haben. Die Klassifizierung von Mitgliedern ist in der Klasse zulässig, z. B. abstrakte, virtuelle und geschützte Typen.
Unten sind die 14 wichtigsten Unterschiede zwischen C# Struct und Class.
Einige wichtige Unterschiede zwischen C#-Struktur und -Klasse sind wie folgt:
Code:
using System; namespace structAndClass { //creating structure public struct Demo { public int x, y; //parameterized constructor public Demo(int x, int y) { this.x = x; this.y = y; } } public class StructDemo { public static void Main(string[] args) { Demo a = new Demo(50, 50); Demo b = a; a.x = 100; Console.WriteLine("Value of a.x = "+a.x); Console.WriteLine("Value of b.x = "+b.x); } } }
Ausgabe:
Code:
using System; namespace structAndClass { public class Demo { public int x, y; public Demo(int x, int y) { this.x = x; this.y = y; } } public class StructDemo { public static void Main(string[] args) { Demo a = new Demo(50, 50); Demo b = a; a.x = 100; Console.WriteLine("Value of a.x = "+a.x); Console.WriteLine("Value of b.x = "+b.x); } } }
Ausgabe:
Sehen wir uns zum besseren Verständnis einige weitere Unterschiede zwischen C# Struct und Class anhand einer Vergleichstabelle an:
Parameter | C# Struct | Class |
Data type | The structure is a value type of data type. | Class is a reference type data type. |
Keyword | The structure can be defined using the ‘struct’ keyword. | The class can be defined using the ‘class’ keyword. |
Storage area | The structure variable is stored either in stack or inline in containing type. | The object of the class is stored in heap. |
Instance creation | The instance of a struct can be created with or without a ‘new’ keyword. | The instance of the class is created using a ‘new’ keyword. |
Assignment | If we make an assignment to a variable of struct type then it creates a copy of the value being assigned. Thus, each variable instructs has its copy of data. | If we make an assignment to a variable of class type then it copies the reference. Thus, two or more variables in class can refer to the same object. |
Constructor | The structure does not contain a parameterless instance constructor. | The class contains a parameterless instance constructor, if not defined explicitly by the user. |
Destructor | It cannot have a destructor. | It can have a destructor. |
Inheritance | The structure cannot inherit from another class or structure.
The structure cannot be used as a base for another structure or class. |
The class can inherit from another class. The class can be a base class for another class. |
Data members | Members of a struct cannot be abstract, virtual or protected. | Members of a class can be abstract, virtual or protected. |
Instance | The instance of the structure is called the structure variable. | The instance of the class is called an object. |
Default access specifier | Members of the structure are public by default. | Members of the class are private by default. |
Usage | The structure can be used for small data structures. | Class is used for the complex data structure. |
Garbage collection | The instance of a struct cannot be garbage collected. | The instance of the class can be garbage collected. |
Variable initializing | Including variable initializer is not allowed while making instance field declarations instruct. | Including variable initializer is allowed while making instance field declarations in a class. |
Sowohl Klasse als auch Struktur werden zum Speichern verwandter Datenelemente verwendet. Wir können die Klasse für eine große Datenmenge und die Struktur für kleine Datenmengen verwenden. Die Klasse ist vom Referenztyp und wird im Heap gespeichert, während die Struktur vom Werttyp ist und im Stapel gespeichert wird.
Das obige ist der detaillierte Inhalt vonC#-Struktur vs. Klasse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!