Différents types de constructeurs en C#
Un constructeur est une méthode spéciale d’une classe qui est automatiquement invoquée chaque fois qu’une instance de classe est créée. Comme les méthodes, un constructeur contient également une suite d’instructions exécutées au moment de la création de l’objet. Il est utilisé pour affecter des valeurs initiales aux données membres de la classe. Voici la liste des constructeurs en C#.
- Constructeur par défaut
- Constructeur paramétré
- Constructeur de copier
- Constructeur statique
- Constructeur privé
Différence entre constructeur et méthode
Un constructeur est utilisé pour initialiser un objet | Une méthode est utilisée pour exposer le comportement d’un objet |
Le constructeur ne doit pas avoir un type de retour. | La méthode peut avoir un type de retour. |
Un constructeur doit être identique au nom de la classe | Le nom de la méthode peut être identique ou non au nom de la classe |
Un constructeur est invoqué implicitement. | Une méthode est appelée explicitement. |
Constructeur par défaut
Un constructeur sans aucun paramètre est appelé un constructeur par défaut. Si nous ne créons pas de constructeur, la classe appellera automatiquement le constructeur par défaut créer par le compilateur lorsqu’un objet est créé.
Exemple :
using System; public class Employee { public Employee() { Console.WriteLine("Constructeur par défaut est appelé"); } public static void Main(string[] args) { Employee emp1 = new Employee(); Employee emp2 = new Employee(); } }
La sortie :
Constructeur par défaut est appelé Constructeur par défaut est appelé
Constructeur paramétré
Un constructeur avec au moins un paramètre s’appelle un constructeur paramétré.
using System; public class Employee { public String name; public float salary; public Employee(String n, float s) { name = n; salary = s; } public void show() { Console.WriteLine(name + " " + salary); } } public class WayToLearnX { public static void Main(string[] args) { Employee emp1 = new Employee("Thomas", 100000); Employee emp2 = new Employee("Alex", 302500); emp1.show(); emp2.show(); } }
La sortie :
Thomas 100000 Alex 302500
Constructeur de copie
Le constructeur qui crée un objet en copiant les variables d’un autre objet s’appelle un constructeur de copie.
using System; public class Employee { public String name; public float salary; // Constructeur paramétré. public Employee(String n, float s) { name = n; salary = s; } // Constructeur de copie. public Employee(Employee emp) { name = emp.name; salary = emp.salary; } public void show() { Console.WriteLine(name + " " + salary); } } public class WayToLearnX { public static void Main(string[] args) { Employee emp1 = new Employee("Thomas", 100000); Employee emp2 = new Employee(emp1); emp1.show(); emp2.show(); } }
La sortie :
Thomas 100000 Thomas 100000
Constructeur statique
Un constructeur statique est utilisé pour initialiser des données statiques.
using System; public class Employee { public String name; public float salary; public static int count; // Constructeur par défaut. public Employee(String n, float s) { name = n; salary = s; } // Constructeur statique. static Employee() { count = 10; } public void show() { Console.WriteLine(name + " " + salary + " " + count); } } public class WayToLearnX { public static void Main(string[] args) { Employee emp1 = new Employee("Thomas", 100000); Employee emp2 = new Employee("Alex", 256974); emp1.show(); emp2.show(); } }
La sortie :
Thomas 100000 10 Alex 256974 10
Constructeur privé
Un constructeur privé est un constructeur généralement utilisé dans les classes contenant uniquement des membres statiques. Si une classe a un ou plusieurs constructeurs privés et aucun constructeur public, les autres classes (à l’exception des classes imbriquées) ne peuvent pas créer des instances de cette classe. L’utilisation de constructeur privé est de servir des classes singleton. Une classe singleton est une classe qui limite le nombre d’objets créés à un. En utilisant un constructeur privé, pour assurer de ne pas avoir plus d’un objet créé à la fois.
using System; public class Employee { public String name; public float salary; // Constructeur privé. private Employee() { } } public class WayToLearnX { public static void Main(string[] args) { // La ligne suivante génère une erreur car le constructeur est inaccessible Employee emp = new Employee(); } }
La sortie :
Compilation error (line 14, col 24): 'Employee.Employee()' is inaccessible due to its protection level