ref struct
Contexte : ref struct est une structure qui réside uniquement sur la pile et ne peut pas être allouée sur le tas. Utilisée pour les scénarios haute performance (ex. Span<T>).
public ref struct Buffer{ private Span<byte> _data; public Buffer(Span<byte> data) => _data = data; public void Write(byte value) => _data[0] = value;}Restrictions
Section intitulée « Restrictions »- Ne peut pas être boxée (pas de conversion
object) - Ne peut pas être utilisée comme champ dans une classe ou une structure non ref
- Ne peut pas implémenter d’interface
- Ne peut pas être utilisée dans des méthodes async (ne peut pas être capturée par une lambda ou une machine à états async)
Exemple d’utilisation dans le monde réel
Section intitulée « Exemple d’utilisation dans le monde réel »Analyse syntaxique sans allocation : Utilisez ref struct avec Span<char> pour analyser du CSV ou du JSON sans allouer de chaînes sur le tas.
Exemple : System.Span<T> est lui‑même une ref struct. De même, Utf8JsonReader dans System.Text.Json est une ref struct pour l’analyse JSON haute performance.