lundi 1 septembre 2025

Mutable et Immutable

🔹 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 readonly ou des propriétés sans set

    • 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).


Return

Aucun commentaire:

Enregistrer un commentaire

Mutable et Immutable Lượt xem: