C# | Copy Constructor

A constructor that creates an object by copying variables from another object or that copies the data of one object into another object is termed as the Copy Constructor. It is a parameterized constructor that contains a parameter of the same class type. The main use of copy constructor is to initialize a new instance to the values of an existing instance. Normally, C# does not provide a copy constructor for objects, but if you want to create a copy constructor in your program you can create according to your requirement.

Syntax:

class Class_Name {

        // Parameterized Constructor
        public Class_Name(parameter_list)
        {

            // code

        }

        // Copy Constructor
        public Class_Name(Class_Name instance_of_class)
        {

            // code

        }

    }

Example 1:



filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to illustrate the use 
// of copy constructor
using System;
  
namespace simplecopyconstructor {
  
class technicalscripter {
  
    // variables
    private string topic_name;
    private int article_no;
  
    // parametrized constructor
    public technicalscripter(string topic_name, int article_no)
    {
        this.topic_name = topic_name;
        this.article_no = article_no;
    }
  
    // copy constructor
    public technicalscripter(technicalscripter tech)
    {
        topic_name = tech.topic_name;
        article_no = tech.article_no;
    }
  
    // getting the topic name and 
    // number of articles published
    public string Data
    {
  
        get
        {
            return "The name of topic is: " + topic_name + 
                   " and number of published article is: "
                                    article_no.ToString();
        }
    }
}
  
// Driver Class
public class GFG {
  
// Main Method
static public void Main()
{
  
    // creating object t1
    // and provide value to the object
    technicalscripter t1 = new technicalscripter(" C# | Copy Constructor", 38);
  
    // Creating object t2 and
    // copy the data of t1 object
    // into t2 object
    technicalscripter t2 = new technicalscripter(t1);
  
    Console.WriteLine(t2.Data);
    Console.ReadLine();
}
}
}

chevron_right


Output:

The name of topic is:  C# | Copy Constructor and number of published article is: 38

Example 2:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# Program to illustrate the use
// of Copy constructor
using System;
  
namespace copyConstructorExample {
  
class Vehicle {
  
    // variables
    private string name;
    private string color;
    private int quantity;
  
    //  Copy constructor
    public Vehicle(Vehicle a)
    {
        name = a.name;
        color = a.color;
        quantity = a.quantity;
    }
  
    // Parameterized constructor
    public Vehicle(string name, string color, int quantity)
    {
        this.name = name;
        this.color = color;
        this.quantity = quantity;
    }
  
    // Get deatils of Vehicles
    public string DetailsofVehicle
    {
        get
        {
            return "Type: " + name.ToString() + 
                   "\nColor: " + color.ToString() + 
                   "\nQuantity: " + quantity.ToString();
        }
    }
  
    // Main Method
    public static void Main()
    {
  
        // Create a new object.
        Vehicle v1 = new Vehicle("Bike", "Black", 40);
  
        // here is v1 details are copied to v2.
        Vehicle v2 = new Vehicle(v1);
  
        Console.WriteLine(v2.DetailsofVehicle);
    }
}
}

chevron_right


Output:

Type: Bike
Color: Black
Quantity: 40


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :

1


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.