Événements
Créer des applications intelligentes
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantCe navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
Les enregistrements C# fournissent un constructeur de copie pour les objets, mais pour les classes, vous devez en écrire un vous-même.
Important
L’écriture de constructeurs de copie qui fonctionnent pour tous les types dérivés d’une hiérarchie de classes peut être difficile. Si votre classe n’est pas sealed
, vous devez fortement envisager de créer une hiérarchie de types record class
pour utiliser le constructeur de copie synthétisé par le compilateur.
Dans l’exemple suivant, la classe Person
définit un constructeur de copie qui prend comme argument une instance de Person
. Les valeurs des propriétés de l’argument sont assignées aux propriétés de la nouvelle instance de Person
. Le code contient un autre constructeur de copie qui envoie les propriétés Name
et Age
de l’instance que vous voulez copier au constructeur d’instance de la classe. La classe Person
est sealed
, de sorte qu’aucun type dérivé ne peut être déclaré qui pourrait introduire des erreurs en copiant uniquement la classe de base.
public sealed 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
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Événements
Créer des applications intelligentes
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantEntrainement
Module
Get started with classes and objects in C# - Training
Learn how to create classes and instantiate objects that expose encapsulated field data by using class definitions, constructors, and the 'new' operator.