🔹 Objet mutable
-
On peut changer ses propriétés/valeurs après l’avoir instancié.
-
Exemple classique : une classe avec des propriétés
set.
public class Person
{
public string Name { get; set; } // modifiable
public int Age { get; set; } // modifiable
}
class Program
{
static void Main()
{
var p = new Person { Name = "Alice", Age = 25 };
Console.WriteLine(p.Name); // Alice
p.Name = "Bob"; // ✅ on peut modifier
Console.WriteLine(p.Name); // Bob
}
}
Ici, Person est mutable car ses propriétés peuvent changer après la création.
🔹 Objet immutable
-
Une fois créé, son état ne peut plus être modifié.
-
Pour cela :
-
Utiliser des
readonlyou des propriétés sansset -
Initialiser uniquement via le constructeur
-
Pas de méthode qui modifie l’état interne
-
Exemple avec record (introduit en C# 9) :
public record Person(string Name, int Age);
class Program
{
static void Main()
{
var p1 = new Person("Alice", 25);
Console.WriteLine(p1.Name); // Alice
// p1.Name = "Bob"; ❌ Impossible, c'est immutable
// Mais on peut créer une nouvelle instance avec `with`
var p2 = p1 with { Name = "Bob" };
Console.WriteLine(p2.Name); // Bob
Console.WriteLine(p1.Name); // Alice (reste inchangé)
}
}
Ici, record rend l’objet immutable (comme une valeur).
🔹 Exemples dans .NET
-
Immutable :
string,System.DateTime,System.Guid -
Mutable :
List<T>,Dictionary<TKey, TValue>, classes avec setters
👉 En résumé :
-
Mutable = l’objet peut changer (ex.
List<int>, classes avec setters). -
Immutable = l’objet ne peut pas changer (ex.
string,DateTime,record).
Aucun commentaire:
Enregistrer un commentaire