Адрес элемента List-a в памяти - C#
Формулировка задачи:
Есть вот такой вот Лист:
Например в нем 3 элемента, как вывести адрес в памяти 1-ого и последнего элемента этого списка?
List<int> spisok = new List<int>;
Решение задачи: «Адрес элемента List-a в памяти»
textual
Листинг программы
List<int> lst = new List<int>() { 1, 2, 3 };
Console.WriteLine("{0} {1} {2}", lst[0], lst[1], lst[2]);
Type type = lst.GetType();
System.Reflection.FieldInfo fi = type.GetField("_items", System.Reflection.BindingFlags.GetField | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
int[] array = (int[])fi.GetValue(lst);
unsafe
{
fixed (int* ptr = array)
{
// адреса первых 3-x элементов массива (=списка)
Console.WriteLine("{0:X16} {1:X16} {2:X16}", (long)(&ptr[0]), (long)(&ptr[1]), (long)(&ptr[2]));
// меняем значения в массиве (=списке)
ptr[0] = 3;
ptr[1] = 4;
ptr[2] = 5;
}
}
Console.WriteLine("{0} {1} {2}", lst[0], lst[1], lst[2]);