Created
November 11, 2019 05:58
-
-
Save ezirmusitua/62bddd0368736252cad9b401192591ea to your computer and use it in GitHub Desktop.
[Copy contructor] Copy constructor in CSharp #CSharp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// reference: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/how-to-write-a-copy-constructor | |
class Person | |
{ | |
// Copy constructor. | |
public Person(Person previousPerson) { | |
Name = previousPerson.Name; | |
Age = previousPerson.Age; | |
} | |
//// Alternate copy constructor calls the instance constructor. | |
//public Person(Person previousPerson) | |
// : this(previousPerson.Name, previousPerson.Age) | |
//{ | |
//} | |
// Instance constructor. | |
public Person(string name, int age) { | |
Name = name; | |
Age = age; | |
} | |
public int Age { get; set; } | |
public string Name { get; set; } | |
public string Details() { | |
return Name + " is " + Age.ToString(); | |
} | |
} | |
class TestPerson { | |
static void Main() { | |
// Create a Person object by using the instance constructor. | |
Person person1 = new Person("George", 40); | |
// Create another Person object, copying person1. | |
Person person2 = new Person(person1); | |
// Change each person's age. | |
person1.Age = 39; | |
person2.Age = 41; | |
// Change person2's name. | |
person2.Name = "Charles"; | |
// Show details to verify that the name and age fields are distinct. | |
Console.WriteLine(person1.Details()); | |
Console.WriteLine(person2.Details()); | |
// Keep the console window open in debug mode. | |
Console.WriteLine("Press any key to exit."); | |
Console.ReadKey(); | |
} | |
} | |
// Output: | |
// George is 39 | |
// Charles is 41 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment