Klassenobjekte vs Strukturobjekte
Klassenobjekte können ebenso wie Strukturen in Arrays, Dictionaries und Listen gespeichert werden. Es ist jedoch wichtig zu beachten, dass Klassenobjekte als Referenz übergeben werden, während Struktur-Objekte als Wert übergeben werden.
Dieses Konzept ist entscheidend, da das Übergeben von einfachen Werten wie int
, float
oder double
an Methoden sich von der Übergabe komplexer Objekte und Strukturen an Methoden unterscheidet. Im Folgenden wird ein Beispiel betrachtet, um dieses Konzept besser zu verstehen.
Es wird ein einfaches Struktur-Objekt erstellt und an eine Methode übergeben. Der Wert wird innerhalb der Methode geändert, um zu sehen, was mit dem Wert des ursprünglichen Objekts geschieht:
index.cs
123456789101112131415161718192021222324252627using System; // Defining a simple structure struct Example { public int value; } public class ConsoleApp { static void exampleMethod(Example passedObject) { passedObject.value += 10; Console.WriteLine($"passedObject: {passedObject.value}"); } public static void Main(string[] args) { // Creating and initialising an object Example originalObject = new Example(); originalObject.value = 7; // Passing that object into a method exampleMethod(originalObject); // Checking the value of the originalObject Console.WriteLine($"originalObject: {originalObject.value}"); } }
Die Ausgabe zeigt, dass der Wert von passedObject
aktualisiert wurde, während der Wert von originalObject
unverändert blieb. Dies verdeutlicht, dass beim Übergeben eines Struktur-Objekts an eine Methode eine Kopie dieses Objekts erstellt und an die Methode übergeben wird, das heißt, es wird per Wert übergeben.
Nun wird exakt derselbe Code verwendet, wobei lediglich der Begriff struct
durch class
ersetzt wird:
index.cs
123456789101112131415161718192021222324252627using System; // Defining a simple class class Example { public int value; } public class ConsoleApp { static void exampleMethod(Example passedObject) { passedObject.value += 10; Console.WriteLine($"passedObject: {passedObject.value}"); } public static void Main(string[] args) { // Creating and initialising an object Example originalObject = new Example(); originalObject.value = 7; // Passing that object into a method exampleMethod(originalObject); // Checking the value of the originalObject Console.WriteLine($"originalObject: {originalObject.value}"); } }
Sie werden feststellen, dass sich die Ausgabe geändert hat – sowohl das passedObject
als auch das originalObject
haben diesmal denselben Wert. Dies beweist, dass beim Übergeben eines Klassenobjekts an eine Methode eine Referenz auf das Originalobjekt übergeben wird, sodass Änderungen an passedObject
auch originalObject
verändern.
Diese Eigenschaft gilt auch beim Zuweisen von Objekten zu Variablen. Im Folgenden ein Beispiel, das das Verhalten eines Struktur-Objekts zeigt:
index.cs
12345678910111213141516171819202122232425using System; struct Num { public int value; } public class ConsoleApp { public static void Main(string[] args) { // Creating and initiating 'a' Num a = new Num(); a.value = 7; // Creating 'b' and setting it equal to a. Num b = a; Console.WriteLine($"a is {a.value} and b is {b.value}"); // Now we change the value of 'b' to something else b.value = 9; Console.WriteLine($"a is {a.value} and b is {b.value}"); } }
Der gleiche Code, aber dieses Mal für ein Klassenobjekt:
index.cs
12345678910111213141516171819202122232425using System; class Num { public int value; } public class ConsoleApp { public static void Main(string[] args) { // Creating and initiating 'a' Num a = new Num(); a.value = 7; // Creating 'b' and setting it equal to a. Num b; b = a; Console.WriteLine($"a is {a.value} and b is {b.value}"); // Now we change the value of 'b' to something else b.value = 9; Console.WriteLine($"a is {a.value} and b is {b.value}"); } }
1. Klassenobjekte sind:
2. Der folgende Code demonstriert die Verwendung von Klassenobjekten mit Listen und Dictionaries. Die Kommentare im Code erläutern die Funktionsweise. Lies den Code und wähle die Option, die die korrekte Ausgabe zeigt. Der Code ist zwar umfangreich, eignet sich jedoch hervorragend als Übung zum Lesen von Code.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 2.04
Klassenobjekte vs Strukturobjekte
Swipe um das Menü anzuzeigen
Klassenobjekte können ebenso wie Strukturen in Arrays, Dictionaries und Listen gespeichert werden. Es ist jedoch wichtig zu beachten, dass Klassenobjekte als Referenz übergeben werden, während Struktur-Objekte als Wert übergeben werden.
Dieses Konzept ist entscheidend, da das Übergeben von einfachen Werten wie int
, float
oder double
an Methoden sich von der Übergabe komplexer Objekte und Strukturen an Methoden unterscheidet. Im Folgenden wird ein Beispiel betrachtet, um dieses Konzept besser zu verstehen.
Es wird ein einfaches Struktur-Objekt erstellt und an eine Methode übergeben. Der Wert wird innerhalb der Methode geändert, um zu sehen, was mit dem Wert des ursprünglichen Objekts geschieht:
index.cs
123456789101112131415161718192021222324252627using System; // Defining a simple structure struct Example { public int value; } public class ConsoleApp { static void exampleMethod(Example passedObject) { passedObject.value += 10; Console.WriteLine($"passedObject: {passedObject.value}"); } public static void Main(string[] args) { // Creating and initialising an object Example originalObject = new Example(); originalObject.value = 7; // Passing that object into a method exampleMethod(originalObject); // Checking the value of the originalObject Console.WriteLine($"originalObject: {originalObject.value}"); } }
Die Ausgabe zeigt, dass der Wert von passedObject
aktualisiert wurde, während der Wert von originalObject
unverändert blieb. Dies verdeutlicht, dass beim Übergeben eines Struktur-Objekts an eine Methode eine Kopie dieses Objekts erstellt und an die Methode übergeben wird, das heißt, es wird per Wert übergeben.
Nun wird exakt derselbe Code verwendet, wobei lediglich der Begriff struct
durch class
ersetzt wird:
index.cs
123456789101112131415161718192021222324252627using System; // Defining a simple class class Example { public int value; } public class ConsoleApp { static void exampleMethod(Example passedObject) { passedObject.value += 10; Console.WriteLine($"passedObject: {passedObject.value}"); } public static void Main(string[] args) { // Creating and initialising an object Example originalObject = new Example(); originalObject.value = 7; // Passing that object into a method exampleMethod(originalObject); // Checking the value of the originalObject Console.WriteLine($"originalObject: {originalObject.value}"); } }
Sie werden feststellen, dass sich die Ausgabe geändert hat – sowohl das passedObject
als auch das originalObject
haben diesmal denselben Wert. Dies beweist, dass beim Übergeben eines Klassenobjekts an eine Methode eine Referenz auf das Originalobjekt übergeben wird, sodass Änderungen an passedObject
auch originalObject
verändern.
Diese Eigenschaft gilt auch beim Zuweisen von Objekten zu Variablen. Im Folgenden ein Beispiel, das das Verhalten eines Struktur-Objekts zeigt:
index.cs
12345678910111213141516171819202122232425using System; struct Num { public int value; } public class ConsoleApp { public static void Main(string[] args) { // Creating and initiating 'a' Num a = new Num(); a.value = 7; // Creating 'b' and setting it equal to a. Num b = a; Console.WriteLine($"a is {a.value} and b is {b.value}"); // Now we change the value of 'b' to something else b.value = 9; Console.WriteLine($"a is {a.value} and b is {b.value}"); } }
Der gleiche Code, aber dieses Mal für ein Klassenobjekt:
index.cs
12345678910111213141516171819202122232425using System; class Num { public int value; } public class ConsoleApp { public static void Main(string[] args) { // Creating and initiating 'a' Num a = new Num(); a.value = 7; // Creating 'b' and setting it equal to a. Num b; b = a; Console.WriteLine($"a is {a.value} and b is {b.value}"); // Now we change the value of 'b' to something else b.value = 9; Console.WriteLine($"a is {a.value} and b is {b.value}"); } }
1. Klassenobjekte sind:
2. Der folgende Code demonstriert die Verwendung von Klassenobjekten mit Listen und Dictionaries. Die Kommentare im Code erläutern die Funktionsweise. Lies den Code und wähle die Option, die die korrekte Ausgabe zeigt. Der Code ist zwar umfangreich, eignet sich jedoch hervorragend als Übung zum Lesen von Code.
Danke für Ihr Feedback!