Je voudrais épingler les implémentations IEnumerable en mémoire avec cette méthode d'extension générique sur laquelle je travaille. Il semble fonctionner correctement avec les tableaux mais échoue avec d'autres séquences (listes et collections). voici la mise en œuvre de la méthode.Pinning IEnumerables in C#
// <summary>
/// Pins an IEnumerable of type T in memory
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sequence"></param>
/// <returns></returns>
public static GCHandle Pin<T>(this IEnumerable<T> @sequence)
{
return GCHandle.Alloc(@sequence, GCHandleType.Pinned);
}
Pourquoi est-ce que cela échoue pour certains types mais fonctionne pour d'autres? Pouvez-vous expliquer le concept derrière cela? Y a-t-il une meilleure façon de faire cela que mon approche générique? Je vous remercie.
Merci pour l'information Barry, bien expliqué – gogole