Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Aktualisiert: November 2007
Dieses Beispiel verdeutlicht Folgendes: Wenn struct an eine Methode übergeben wird, wird eine Kopie der Struktur übergeben. Bei der Übergabe einer class-Instanz wird jedoch ein Verweis übergeben.
An der Ausgabe des folgenden Beispiels ist erkennbar, dass bei der Übergabe der class-Instanz an die ClassTaker-Methode lediglich der Wert des class-Felds geändert wurde. Das struct-Feld bleibt bei der Übergabe der Instanz an die StructTaker-Methode jedoch unverändert. Dies liegt daran, dass lediglich eine Kopie der Struktur an die StructTaker-Methode übergeben wurde, während an die ClassTaker-Methode ein Verweis auf die Klasse übergeben wurde.
Beispiel
class TheClass
{
public string willIChange;
}
struct TheStruct
{
public string willIChange;
}
class TestClassAndStruct
{
static void ClassTaker(TheClass c)
{
c.willIChange = "Changed";
}
static void StructTaker(TheStruct s)
{
s.willIChange = "Changed";
}
static void Main()
{
TheClass testClass = new TheClass();
TheStruct testStruct = new TheStruct();
testClass.willIChange = "Not Changed";
testStruct.willIChange = "Not Changed";
ClassTaker(testClass);
StructTaker(testStruct);
Console.WriteLine("Class field = {0}", testClass.willIChange);
Console.WriteLine("Struct field = {0}", testStruct.willIChange);
// Keep the console window open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
/* Output:
Class field = Changed
Struct field = Not Changed
*/
Siehe auch
Konzepte
Referenz
Klassen (C#-Programmierhandbuch)