所以我知道列表中包含数组,所以我需要得到一个未知类型的指针(void *)。使用数组很容易:
int[] items;
fixed (void* pointer = items)
{
}
所以我需要为List
做同样的事情List<int> items;
fixed (void* pointer = items)
{
}
此代码似乎不起作用。我不想将列表复制到新数组,我想访问指向它的内部数组的指针
答案 0 :(得分:2)
有可能。
您可以通过反射访问私有数组List<T>._items
。
自己实施一个!
利用开源的.NET Core项目,它是免费的:source code of List<T>
。然后添加方法或某些东西以获得List<T>._items
的不安全指针非常容易。
答案 1 :(得分:1)
无法获得指向List<T>
的指针 - 您只能获得指向基本类型数组的指针。 (在这种情况下,通过获取其地址,您将获得指向第一个元素的指针。)
根据列表的大小,您可以在列表中调用ToArray()
,然后获取指向第一个元素的指针,但这对于大型数组来说可能相当昂贵。