所以我知道该列表包含数组里面,所以我需要得到它的未知类型的指针(void *)。这是很容易与数组做:如何获取列表的指针?
int[] items;
fixed (void* pointer = items)
{
}
所以我需要做同样的事情列表
List<int> items;
fixed (void* pointer = items)
{
}
此代码似乎并不工作。我不想复制一个列表到一个新的数组,我想访问一个指向它的内部数组的指针
所以我知道该列表包含数组里面,所以我需要得到它的未知类型的指针(void *)。这是很容易与数组做:如何获取列表的指针?
int[] items;
fixed (void* pointer = items)
{
}
所以我需要做同样的事情列表
List<int> items;
fixed (void* pointer = items)
{
}
此代码似乎并不工作。我不想复制一个列表到一个新的数组,我想访问一个指向它的内部数组的指针
这是可能的。
您可以通过反射访问私有数组字段List<T>._items
。
自己实施一个!
利用开放源代码的.NET Core项目,它是免费的:source code of List<T>
。然后添加方法或东西,以获得不安全的指针List<T>._items
是非常容易的。
不要问我,为什么我需要使用非托管代码。我只需要 – Eugen1344
你可以得到一个指向它的第一个项目的指针,因为这基本上就是你在用数组做什么。 –
@RonBeyer但我可以做到这一点,只有当我的列表包含值类型,对不对? – Eugen1344