Адрес элемента List-a в памяти - C#

Узнай цену своей работы

Формулировка задачи:

Есть вот такой вот Лист:
List<int> spisok = new List<int>;
Например в нем 3 элемента, как вывести адрес в памяти 1-ого и последнего элемента этого списка?

Решение задачи: «Адрес элемента 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]);

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

Оцени полезность:

12   голосов , оценка 4 из 5
Похожие ответы