Home  >  Article  >  Backend Development  >  Copy Constructor in C#

Copy Constructor in C#

WBOY
WBOYOriginal
2024-09-03 15:12:44494browse

The constructor, which copy variables of another object and create a new object, is called a copy constructor. In C#, the copy constructor is also a parameterized constructor. A parameterized constructor is a constructor that contains a parameter of the same class type. The copy constructor is useful whenever we want to initialize a new instance to an existing instance’s values. So, the Copy constructor is a constructor that basically sends the values of one object to another object without affecting an existing object’s values.

How does Copy Constructor work in C#?

In C#, we can use a copy constructor if we want to audit a class or remember the class’s old values. C# doesn’t provide a copy constructor. However, we can use a copy constructor along with another constructor.

Syntax

class Name {
// Parameterized Constructor
public Name(parameters)
{
// code
}
public Name(Name instance of class)   //copyconstructor
{
//code
}
}

The name of the constructor is the same as its class name. Method Signature of constructor consists of the name of the method along with its parameter list. There can be any number of constructors in a class. The copy constructor is not the only constructor in a class. Another constructor is required with a copy constructor to create an object. The following are the example that shows how to use copy constructor for a class.

Example 1: Without Copy Constructor

Code

class Demo
{
//variables
string name;
int age;
public Demo(string name, int age) //parameterized constructor
{
this.name = name;
this.age = age;
}
public void getData()
{
Console.WriteLine("Name is:{0}", name);
Console.WriteLine("Age is:{0}", age);
}
}
class Program
{
// Main method
static void Main(string[] args)
{
Demo obj = new Demo("John",20);
obj.getData();
Console.ReadLine();
}
}

In the above example, there is only one parameterized constructor, which has two variables. getData() is used to display the values of the object.

Output:

 Copy Constructor in C#

With Copy Constructor

Code

class Demo
{
string name;
int age;
public Demo(string name, int age) //paramertrized constructor
{
this.name = name;
this.age = age;
}
public Demo(Demo d) //copy constructor
{
this.name = d.name;
this.age = d.age;
}
public void getData()
{
Console.WriteLine("Name is:{0}", name);
Console.WriteLine("Age is:{0}", age);
}
}
class Program
{
//main method
static void Main(string[] args){
Demo obj = new Demo("John",20);
obj.getData();
Demo obj1 = new Demo(obj); //new object
obj1.getData();
Console.ReadLine();
}
}

In the above example, Demo is a class that contains two constructors. A copy constructor is always used with another constructor. A copy constructor sends the name and age properties of one object to another object. Below is the above program’s output as the first values are for the existing object, and copy the constructor copy these values and create a new object with the same values as of existing object.

Example 2

Code

class pen
{
// variables
private string name;
private string color;
private int price;
//  Copy constructor
public pen(pen a)
{
name = a.name;
color = a.color;quantity = a.price;
}
// Parameterized constructor
public pen(string name, string color, int price){
this.name = name;
this.color = color;
this.quantity =price;
}
public void getPendetails()
{Console.WriteLine("Name is:{0}", name);
Console.WriteLine("color is:{0}", color);
Console.WriteLine("price is:{0}", price);
}
// Main Method
public static void Main()
{
// Create a new object.
pen p1 = new pen("Parker", "Blue", 30);
pen p2 = new pen(p1);
p2.getPendetails();
Console.ReadLine();
}}
}

In the above program, we initialize three variables for a class pen that defines the properties of the class. Copy constructor copies the properties of a pen from one object to another. The main() function initializes an object with the values as the parameters for the parameterized constructor. Then the values are displayed using getPendetails(). The new object does not affect the existing object values. The output is shown below.

Output:

Copy Constructor in C#

Example 3

Code

class Calculate
{
//variables
private int a;
private int b;
public Calculate(int x, int y) // parameterized constructor
{
a = x;
b = y;
}
public Calculate(Calculate cal)  //copy constructor
{
a = cal.a;
b = cal.b;
}
public int getSum()
{
return a + b;
}
}
class Sum
{
// main method
static void Main(string[] args)
{
// create a new object
Calculate c1 = new Calculate(34, 4);
Calculate c2 = new Calculate(c1);
c2.getSum();
Console.ReadLine();
}
}

Now let us understand the above program.

The class contains the variables a and b and two constructors, i.e. a parameterized constructor and a copy constructor.

Code

class Calculate
{
//variables
private int a;
private int b;
public Calculate(int x, int y) //parameterized constructor
{
a = x;
b = y;
}
public Calculate(Calculate cal) //copy constructor
{
a = cal.a;
b = cal.b;
}
public int getSum()
{
return a + b;
}
}

The copy constructor sends the values of the cal object into a and b.  The function gets() returns the sum of a and b. The main() is in the class Sum, which initializes the c1 as the parameters and then copies constructor is sent the value of object c1 to object c2. The sum of a and b is displayed using the getSum().

Code

class Sum
{
// main method
static void Main(string[] args)
{
Calculate c1 = new Calculate(34, 4);
Calculate c2 = new Calculate(c1);
c2.getSum();
Console.ReadLine();
}
}

Output:

Copy Constructor in C#

 Rules for Copy Constructor in C#

  • The name of the copy constructor should be the same as the class name.
  • Another constructor is required with a copy constructor to copy an object.
  • There is no return type of copy constructor.
  • The copy constructor cannot be final, static and abstract.

Conclusion

So whenever you want to copy an object value to other objects, you can use a copy constructor. It’s a way to tell the compiler how to copy one object’s values in another object. It happens when we pass parameters to an object. ICloneable interface is also used by adding a Clone method to your class, making a copy of the existing object. In copy constructor, you can specify custom behavior by giving a unique ID or by copying some required fields and not others.

The above is the detailed content of Copy Constructor in C#. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:Constructor in C#Next article:Constructor in C#