Адрес элемента 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]);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д