Span<T> et Memory<T>
Contexte : Span<T> et Memory<T> sont des types ref‑struct introduits dans .NET Core 2.1 pour fournir un accès sûr et sans allocation à des régions de mémoire contiguës. Ils peuvent représenter des tableaux, des chaînes ou des tampons natifs. Span<T> est réservé à la pile, tandis que Memory<T> peut vivre sur le tas et être utilisé dans des méthodes asynchrones. Ils sont essentiels pour les scénarios haute performance où vous souhaitez éviter de copier des données.
Exemple d’utilisation
Section intitulée « Exemple d’utilisation »using System;
public class SpanDemo{ public static void SliceExample() { int[] numbers = { 1, 2, 3, 4, 5 }; Span<int> span = numbers.AsSpan(); Span<int> slice = span.Slice(1, 3); // {2,3,4} slice[0] = 10; // Modifie le tableau original Console.WriteLine(numbers[1]); // 10 }}Sortie console
Section intitulée « Sortie console »dotnet run10Remarques importantes
Section intitulée « Remarques importantes »Span<T>ne peut pas être utilisé comme champ dans des méthodes asynchrones ou des classes.Memory<T>est une alternative compatible avec le tas pour les scénarios asynchrones.
Exemple d’utilisation dans le monde réel
Section intitulée « Exemple d’utilisation dans le monde réel »Analyse de lignes CSV – Au lieu d’allouer des sous‑chaînes, utilisez Span<char> et Slice pour analyser des valeurs séparées par des virgules sans allocations.
Voir documentation .NET sur Span