static void Main(string[] args) { // Passing ref-types by value. Console.WriteLine("***** Passing Person object by value *****"); Person fred = new Person("Fred", 12); Console.WriteLine("]nBefore by value call, Person is:"); fred.Display(); SendAPersonByValue(fred); Console.WriteLine("\nAfter by value call, Person is:"); fred.Display(); // Passing ref-types by reference. Console.WriteLine("\n***** Passing Person object by reference *****"); Person mel = new Person("Mel", 23); Console.WriteLine("Before by ref call, Person is:"); mel.Display(); SendAPersonByReference(ref mel); Console.WriteLine("After by ref call, Person is:"); mel.Display(); Console.ReadKey(); }
static void SendAPersonByValue(Person p) { // Change the age of "p"? p.personAge = 99; // Will the caller see this reassignment? p = new Person("Nikki", 99); }
static void SendAPersonByReference(ref Person p) { // Change some data of "p". p.personAge = 555; // "p" is now pointing to a new object on the heap! p = new Person("Nikki", 999); }
static void Main(string[] args) { Console.WriteLine("Passing a class by value"); Person fred = new Person("Fred", 12); Console.WriteLine("Before pass by val: "); fred.Display(); SendAClassByValue(fred); Console.WriteLine("After pass by val"); fred.Display(); SendAClassByReference(ref fred); Console.WriteLine("After pass by ref"); fred.Display(); Console.ReadLine(); //Person p = new Person(); }
static void SendAClassByReference(ref Person p) { p.personAge = 555; p = new Person("Nikki", 999); }
static void SendAClassByValue(Person p) { p.personAge = 99; p = new Person("Nikki", 99); }
static void SendAPersonByValue(Person p) { //change the age of "p"? YUUUP p.personAge = 99; //will the caller see this reassignment? NEWP p = new Person("Nikki", 99); }