通过从另一个对象复制变量来创建对象或将一个对象的数据复制到另一个对象的构造函数称为“复制构造函数” 。它是一个参数化的构造函数,其中包含相同类类型的参数。复制构造函数的主要用途是将新实例初始化为现有实例的值。通常,C#不为对象提供复制构造函数,但是如果要在程序中创建复制构造函数,则可以根据需要创建。
句法:
class Class_Name {
// Parameterized Constructor
public Class_Name(parameter_list)
{
// code
}
// Copy Constructor
public Class_Name(Class_Name instance_of_class)
{
// code
}
}
范例1:
// 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();
}
}
}
输出:
The name of topic is: C# | Copy Constructor and number of published article is: 38
范例2:
// 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);
}
}
}
输出:
Type: Bike
Color: Black
Quantity: 40