Inhaltsverzeichnis
Wie funktioniert der Copy Constructor in C#?
Beispiel 1: Ohne Kopierkonstruktor
Mit Copy Constructor
Beispiel 3
Fazit
Heim Backend-Entwicklung C#.Net-Tutorial Konstruktor in C# kopieren

Konstruktor in C# kopieren

Sep 03, 2024 pm 03:12 PM
c# c# tutorial

Der Konstruktor, der Variablen eines anderen Objekts kopiert und ein neues Objekt erstellt, wird Kopierkonstruktor genannt. In C# ist der Kopierkonstruktor auch ein parametrisierter Konstruktor. Ein parametrisierter Konstruktor ist ein Konstruktor, der einen Parameter desselben Klassentyps enthält. Der Kopierkonstruktor ist immer dann nützlich, wenn wir eine neue Instanz mit den Werten einer vorhandenen Instanz initialisieren möchten. Der Copy-Konstruktor ist also ein Konstruktor, der grundsätzlich die Werte eines Objekts an ein anderes Objekt sendet, ohne die Werte eines vorhandenen Objekts zu beeinflussen.

Wie funktioniert der Copy Constructor in C#?

In C# können wir einen Kopierkonstruktor verwenden, wenn wir eine Klasse prüfen oder uns die alten Werte der Klasse merken möchten. C# bietet keinen Kopierkonstruktor. Wir können jedoch einen Kopierkonstruktor zusammen mit einem anderen Konstruktor verwenden.

Syntax

class Name {
// Parameterized Constructor
public Name(parameters)
{
// code
}
public Name(Name instance of class)   //copyconstructor
{
//code
}
}
Nach dem Login kopieren

Der Name des Konstruktors ist derselbe wie sein Klassenname. Die Methodensignatur des Konstruktors besteht aus dem Namen der Methode und ihrer Parameterliste. Eine Klasse kann beliebig viele Konstruktoren enthalten. Der Kopierkonstruktor ist nicht der einzige Konstruktor in einer Klasse. Mit einem Kopierkonstruktor ist ein weiterer Konstruktor erforderlich, um ein Objekt zu erstellen. Das folgende Beispiel zeigt, wie der Kopierkonstruktor für eine Klasse verwendet wird.

Beispiel 1: Ohne Kopierkonstruktor

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();
}
}
Nach dem Login kopieren

Im obigen Beispiel gibt es nur einen parametrisierten Konstruktor, der zwei Variablen hat. getData() wird verwendet, um die Werte des Objekts anzuzeigen.

Ausgabe:

 Konstruktor in C# kopieren

Mit 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();
}
}
Nach dem Login kopieren

Im obigen Beispiel ist Demo eine Klasse, die zwei Konstruktoren enthält. Ein Kopierkonstruktor wird immer mit einem anderen Konstruktor verwendet. Ein Kopierkonstruktor sendet die Namens- und Alterseigenschaften eines Objekts an ein anderes Objekt. Unten sehen Sie die Ausgabe des obigen Programms, da die ersten Werte für das vorhandene Objekt gelten. Kopieren Sie den Konstruktor, kopieren Sie diese Werte und erstellen Sie ein neues Objekt mit denselben Werten wie das vorhandene Objekt.

Beispiel 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();
}}
}
Nach dem Login kopieren

Im obigen Programm initialisieren wir drei Variablen für einen Klassenstift, der die Eigenschaften der Klasse definiert. Der Kopierkonstruktor kopiert die Eigenschaften eines Stifts von einem Objekt auf ein anderes. Die Funktion main() initialisiert ein Objekt mit den Werten als Parameter für den parametrisierten Konstruktor. Anschließend werden die Werte mit getPendetails() angezeigt. Das neue Objekt hat keinen Einfluss auf die vorhandenen Objektwerte. Die Ausgabe wird unten angezeigt.

Ausgabe:

Konstruktor in C# kopieren

Beispiel 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();
}
}
Nach dem Login kopieren

Lassen Sie uns nun das obige Programm verstehen.

Die Klasse enthält die Variablen a und b und zwei Konstruktoren, nämlich einen parametrisierten Konstruktor und einen Kopierkonstruktor.

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;
}
}
Nach dem Login kopieren

Der Kopierkonstruktor sendet die Werte des Cal-Objekts in a und b.  Die Funktion gets() gibt die Summe von a und b zurück. Die Funktion main() befindet sich in der Klasse Sum, die c1 als Parameter initialisiert und dann den Konstruktor kopiert, indem er den Wert von Objekt c1 an Objekt c2 sendet. Die Summe von a und b wird mit getSum() angezeigt.

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();
}
}
Nach dem Login kopieren

Ausgabe:

Konstruktor in C# kopieren

 Regeln für den Kopierkonstruktor in C#

  • Der Name des Kopierkonstruktors sollte mit dem Klassennamen identisch sein.
  • Bei einem Kopierkonstruktor ist ein weiterer Konstruktor erforderlich, um ein Objekt zu kopieren.
  • Es gibt keinen Rückgabetyp des Kopierkonstruktors.
  • Der Kopierkonstruktor kann nicht final, statisch und abstrakt sein.

Fazit

Wenn Sie also einen Objektwert auf andere Objekte kopieren möchten, können Sie einen Kopierkonstruktor verwenden. Auf diese Weise können Sie dem Compiler mitteilen, wie er die Werte eines Objekts in ein anderes Objekt kopieren soll. Dies geschieht, wenn wir Parameter an ein Objekt übergeben. Die ICloneable-Schnittstelle wird auch verwendet, indem Sie Ihrer Klasse eine Clone-Methode hinzufügen und eine Kopie des vorhandenen Objekts erstellen. Im Kopierkonstruktor können Sie benutzerdefiniertes Verhalten festlegen, indem Sie eine eindeutige ID angeben oder einige erforderliche Felder kopieren und andere nicht.

Das obige ist der detaillierte Inhalt vonKonstruktor in C# kopieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1666
14
PHP-Tutorial
1273
29
C#-Tutorial
1254
24
Active Directory mit C# Active Directory mit C# Sep 03, 2024 pm 03:33 PM

Leitfaden zu Active Directory mit C#. Hier besprechen wir die Einführung und die Funktionsweise von Active Directory in C# sowie die Syntax und das Beispiel.

Zufallszahlengenerator in C# Zufallszahlengenerator in C# Sep 03, 2024 pm 03:34 PM

Leitfaden zum Zufallszahlengenerator in C#. Hier besprechen wir die Funktionsweise des Zufallszahlengenerators, das Konzept von Pseudozufallszahlen und sicheren Zahlen.

C#-Datenrasteransicht C#-Datenrasteransicht Sep 03, 2024 pm 03:32 PM

Leitfaden zur C#-Datenrasteransicht. Hier diskutieren wir die Beispiele, wie eine Datenrasteransicht aus der SQL-Datenbank oder einer Excel-Datei geladen und exportiert werden kann.

Fakultät in C# Fakultät in C# Sep 03, 2024 pm 03:34 PM

Leitfaden zur Fakultät in C#. Hier diskutieren wir die Einführung in die Fakultät in C# zusammen mit verschiedenen Beispielen und Code-Implementierungen.

Der Unterschied zwischen Multithreading und asynchronem C# Der Unterschied zwischen Multithreading und asynchronem C# Apr 03, 2025 pm 02:57 PM

Der Unterschied zwischen Multithreading und Asynchron besteht darin, dass Multithreading gleichzeitig mehrere Threads ausführt, während asynchron Operationen ausführt, ohne den aktuellen Thread zu blockieren. Multithreading wird für rechenintensive Aufgaben verwendet, während asynchron für die Benutzerinteraktion verwendet wird. Der Vorteil des Multi-Threading besteht darin, die Rechenleistung zu verbessern, während der Vorteil von Asynchron nicht darin besteht, UI-Threads zu blockieren. Die Auswahl von Multithreading oder Asynchron ist von der Art der Aufgabe abhängt: Berechnungsintensive Aufgaben verwenden Multithreading, Aufgaben, die mit externen Ressourcen interagieren und die UI-Reaktionsfähigkeit asynchron verwenden müssen.

Muster in C# Muster in C# Sep 03, 2024 pm 03:33 PM

Leitfaden zu Mustern in C#. Hier besprechen wir die Einführung und die drei wichtigsten Arten von Mustern in C# zusammen mit ihren Beispielen und der Code-Implementierung.

Primzahlen in C# Primzahlen in C# Sep 03, 2024 pm 03:35 PM

Leitfaden zu Primzahlen in C#. Hier besprechen wir die Einführung und Beispiele von Primzahlen in C# sowie die Codeimplementierung.

So ändern Sie das Format von XML So ändern Sie das Format von XML Apr 03, 2025 am 08:42 AM

Es gibt verschiedene Möglichkeiten, XML -Formate zu ändern: manuell mit einem Texteditor wie Notepad bearbeiten; automatisch Formatierung mit Online- oder Desktop -XML -Formatierungswerkzeugen wie XMLBeautifier; Definieren Sie Conversion -Regeln mithilfe von XML -Conversion -Tools wie XSLT; oder analysieren und mit Verwendung von Programmiersprachen wie Python arbeiten. Seien Sie vorsichtig, wenn Sie die Originaldateien ändern und sichern.

See all articles