У меня есть ссылка на значение в памяти, но я не могу получить это значение и наложить его на мой тип. Пожалуйста, скажите мне, что я должен написать, чтобы я получил значение, или скажите, почему я не могу сделать это
Мой пример:
ListItem<string> item = new ListItem<string>("hell to world"); //ListItem<T> is class
unsafe
{
TypedReference itemRef = __makeref(item);
IntPtr reference = **(IntPtr**)&item;
long address = (long)reference;
}
Я могу использовать __refvalue
. этот метод требует TypedReference
и тип, к которому вы хотите привести значение. Эта работа, но я не знаю, как получить это TypedReference
от void*
, IntPtr
или long
. Я надеюсь, что кто-нибудь поможет мне
UPD: я написал простой двунаправленный список в надежде, что он будет работать, по крайней мере, немного быстрее, чем список по умолчанию. Ну и как обычно в двунаправленных списках есть указатели на следующий и предыдущий элемент. Но я использовал объекты одного класса вместо указателя на этот объект, поэтому я пытался работать с указателями и памятью.
UPD: я написал это только из личного интереса, не более