我想用我正在研究的这种通用扩展方法将IEnumerable实现固定在内存中.它似乎适用于数组,但与其他序列(列表和集合)失败.这是方法实现.
// <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);
}
Run Code Online (Sandbox Code Playgroud)
为什么某些类型失败但为其他类型工作?你能解释一下这背后的概念吗?有没有比我的通用方法更好的方法呢?谢谢.
| 归档时间: |
|
| 查看次数: |
433 次 |
| 最近记录: |