Unterschied zwischen Struktur und Klasse in C#

Muhammad Maisam Abbas 16 Februar 2024
  1. Struktur in C#
  2. Klasse in C#
  3. Unterschied zwischen Struktur und Klasse in C#
Unterschied zwischen Struktur und Klasse in C#

In diesem Tutorial werden wir die Unterschiede und Ähnlichkeiten zwischen Strukturen und Klassen in C# diskutieren.

Struktur in C#

Das Schlüsselwort struct definiert eine Struktur in C#. Ähnlich wie eine Klasse kann eine Struktur Variablen, Eigenschaften und Funktionen enthalten. Wir können Konstruktoren für Strukturen in C# definieren. Wir können jedoch keine Standardkonstruktoren für Strukturen in C# definieren. Wir können keine Destruktoren für Strukturen in C# definieren. Strukturen können auch Schnittstellen in C# implementieren. Der Hauptunterschied zwischen Strukturen und Klassen besteht darin, dass wir eine Struktur nicht als Basis für andere Strukturen oder Klassen für die Vererbung verwenden können. Das folgende Codebeispiel zeigt, wie Sie eine einfache Struktur mit dem Schlüsselwort struct in C# definieren.

struct MyStructure {
  public int x;
};

Im obigen Code definieren wir eine Struktur mit dem Schlüsselwort struct in C#. Strukturen können durch Erstellen einer Instanz verwendet werden. Der Code zum Erstellen einer Instanz einer Struktur ist unten angegeben.

MyStructure S = new MyStructure();

Im obigen Code haben wir eine Instanz der Struktur MyStructure mit dem Schlüsselwort new in C# erstellt.

Klasse in C#

Das Schlüsselwort class definiert eine Klasse in C#. Ähnlich wie eine Struktur kann eine Klasse Variablen, Eigenschaften und Funktionen in C# haben. Wir können auch Standardkonstruktoren und Destruktoren für Klassen in C# definieren. Ein Schlüsselmerkmal von Klassen ist die Vererbung. Eine Klasse kann also als Basis für andere Klassen für die Vererbung verwendet werden. Ein weiteres einzigartiges Merkmal von Klassen ist der Polymorphismus. Das folgende Codebeispiel zeigt, wie Sie eine einfache Klasse mit dem Schlüsselwort class in C# definieren.

class MyClass {
  int x;
  public MyClass(int a) {
    this.x = a;
  }
  public void setx(int a) {
    this.x = a;
  }
  public void show() {
    Console.WriteLine("The value of x = {0}", x);
  }
}

Im obigen Code definieren wir eine Klasse mit dem Schlüsselwort class in C#. Klassen können durch Erstellen einer Instanz verwendet werden. Der Code zum Erstellen einer Instanz einer Klasse ist unten angegeben.

MyClass C = new MyClass(100);

Im obigen Code haben wir eine Instanz der Klasse MyClass mit dem Schlüsselwort new in C# erstellt.

Unterschied zwischen Struktur und Klasse in C#

Die Strukturen sind Variablen vom Typ Wert und befinden sich im Stapel. Die Klassen sind Variablen vom Referenztyp und befinden sich im Heap unter Bezugnahme auf diesen Heap im Stapel.

Die Strukturen können keine Nullwerte haben, während die Klassen Nullwerte haben können. Dies bedeutet, dass eine Variable vom Werttyp einen Wert haben muss, während eine Variable vom Referenztyp möglicherweise auf eine Speicheradresse verweist oder nicht. Der Unterschied zwischen Strukturen und Klassen in C# wird im folgenden Codierungsbeispiel gezeigt.

MyStructure S = new MyStructure();
MyStructure S2 = S;

S.x = 100;
S2.x = 200;

Console.WriteLine("Structure 1 = {0}", S.x);
Console.WriteLine("Structure 2 = {0}", S2.x);

Ausgabe:

Structure 1 = 100
Structure 2 = 200

Wir haben zuerst eine Instanz S der Struktur MyStructure erstellt und dann eine weitere Kopie derselben Instanz erstellt - S2. Danach haben wir die Werte in beiden Instanzen initialisiert.

In der Ausgabe erhalten wir zwei verschiedene Werte für zwei verschiedene Kopien der Instanz. Dies bedeutet, dass sich im Stapel zwei separate Kopien der Struktur MyStructure befinden. Durch das Kopieren einer Werttypvariablen in eine andere Variable wird eine separate Kopie des gesamten Inhalts der Werttypvariablen erstellt.

Im folgenden Codebeispiel machen wir dasselbe mit der Klasse MyClass.

MyClass C = new MyClass(100);
MyClass newC = C;

newC.setx(100);
newC.setx(200);

C.show();
newC.show();

Ausgabe:

The value of x = 200
The value of x = 200

Wir haben zuerst eine Instanz C der Klasse MyClass erstellt und diese Instanz dann in eine andere Instanz newC der Klasse MyClass kopiert. Danach setzen wir den Wert der Variablen x in beiden Instanzen mit der Funktion setx().

In der Ausgabe erhalten wir in beiden Instanzen die gleichen Werte der Variablen x. Dies bedeutet, dass sowohl die Instanzen C als auch newC auf denselben Speicherort im Heap verweisen. Die Referenz der Referenztypvariablen wird nur kopiert, wenn eine Referenztypvariable in eine andere Variable kopiert wird.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Verwandter Artikel - Csharp Class