Aller au contenu

readonly struct

Contexte : readonly struct indique que la structure est immuable. Tous les champs d’instance doivent être readonly, et le compilateur applique l’immuabilité.

public readonly struct Vector
{
public double X { get; }
public double Y { get; }
public Vector(double x, double y) => (X, Y) = (x, y);
public double Length => Math.Sqrt(X * X + Y * Y);
}
  • Intention claire : cette structure ne peut pas être modifiée après sa création
  • Performance : le compilateur peut éviter les copies défensives
  • Thread‑safe par conception

Même si la structure n’est pas readonly, vous pouvez marquer certaines méthodes comme readonly pour empêcher toute modification.

public struct Point
{
public int X, Y;
public readonly double DistanceFromOrigin() => Math.Sqrt(X * X + Y * Y);
}

Paramètres immuables : Utilisez readonly struct pour les valeurs de configuration qui ne changent jamais (ex. AppConstants avec double Pi, int MaxRetries).

Exemple : Dans System.Text.Json, les options de sérialisation peuvent être des structures readonly pour des performances optimales.