static void Main(string[] args) { //Erstellung von Objekten StructPerson person1 = new StructPerson("Hugo", 45); ClassPerson person2 = new ClassPerson("Anna", 45); //Ausgabe Console.WriteLine(person1.Alter); Console.WriteLine(person2.Alter); //Funktionsaufruf Altern(person1); Altern(person2); //Erneute Ausgabe: Nur das Klassenobjekt (Referenztyp) hat sich verändert. Das Structobjekt (Wertetyp) hat sich nicht verändert, //da bei der Übergabe an die Funktion nur eine Kopie des Objekts übergeben wurde. Console.WriteLine(person1.Alter); Console.WriteLine(person2.Alter); //Übergabe des Wertetyps als Refernz mittels Ref-Stichwort Altern2(ref person1); Console.WriteLine(person1.Alter); Console.ReadKey(); }
static void Main(string[] args) { //Erstellung von Objekten KlassenPerson kPerson = new KlassenPerson("Otto", 30); StructPerson sPerson = new StructPerson("Anna", 30); //Ausgabe Console.WriteLine(kPerson.Alter); Console.WriteLine(sPerson.Alter); //Funktionsaufruf Altern(kPerson); Altern(sPerson); //Erneute Ausgabe: Nur das Klassenobjekt (Referenztyp) hat sich verändert Console.WriteLine(kPerson.Alter); Console.WriteLine(sPerson.Alter); //Übergabe des Wertetyps als Refernz mittels Ref-Stichwort Altern(ref sPerson); Console.WriteLine(sPerson.Alter); Console.ReadKey(); }
static void Main(string[] args) { //Erstellung von Objekten StructPerson otto = new StructPerson("Otto"); KlassenPerson anna = new KlassenPerson("Anna"); //Ausgabe Console.WriteLine("Otto: " + otto.alter); Console.WriteLine("Anna: " + anna.alter); //Funktionsaufruf Altern(otto); Altern(anna); //Erneute Ausgabe: Nur das Klassenobjekt (Referenztyp) hat sich verändert Console.WriteLine("Otto: " + otto.alter); Console.WriteLine("Anna: " + anna.alter); //Übergabe des Wertetyps als Refernz mittels Ref-Stichwort Altern(ref otto); Console.WriteLine("Otto: " + otto.alter); Console.ReadKey(); }
//Mittels des REF-Stichworts können Wertetypen als Referenz an Methoden übergeben werden. D.h. die übergebene Speicherstelle selbst ///wird manipuliert und nicht, wie normalerweise bei Wertetypen, eine Kopie des Werts. public static void Altern(ref StructPerson person) { person.Alter++; }
//Mittels des REF-Stichworts können Wertetypen als Referenz an Methoden übergeben werden. D.h. die übergebene Speicherstelle selbst ///wird manipuliert und nicht, wie normalerweise bei Wertetypen, eine Kopie des Werts. static void Altern(ref StructPerson person) { person.alter++; }
static void Altern(StructPerson person) { person.Alter++; }