所以我知道該列表包含數組裏面,所以我需要得到它的未知類型的指針(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