Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2011, 04:04   #1
Mixim
Форумчанин
 
Регистрация: 29.10.2009
Сообщений: 259
Вопрос Создание класса

Необходимо реализовать свой собственный класс MyList, аналогичный классу LinkedList<T>, узлы которого должны представлять собой ещё один класс, аналогичный LinkedListNode<T> - MyListNode.
Пишу следующий код:
Код:
#region Реализация класса "MyListNode"
    public class MyListNode
    {
        #region Поля, имеющиеся в классе MyListNode
        public UInt16 Index = zero;
        private MyListNode Next = null;
            private MyListNode Prev = null;
        #endregion

        public MyListNode()     //пустой конструктор класса MyListNode
        {

        }

        public MyListNode(UInt16 aIndex)   //конструктор с параметром класса MyListNode
        {
            this.Set_Index(aIndex);
        }

        public void Set_Index(UInt16 aIndex)  //метод, позволяющий задать поле Index
        {
            this.Index = aIndex;
        }

            public UInt16 Get_Index()   //метод, позволяющий извлечь поле Index
            {
                return this.Index;
            }

        public void Set_Next(MyListNode aNext)   //метод, позволяющий задать поле Next
        {
            this.Next = aNext;
        }

            public MyListNode Get_Next()   //метод, позволяющий извлечь поле Next
            {
                return this.Next;
            }

        public void Set_Prev(MyListNode aPrev)   //метод, позволяющий задать поле Prev
        {
            this.Prev = aPrev;
        }

            public MyListNode Get_Prev()   //метод, позволяющий извлечь поле Prev
            {
                return this.Prev;
            }
        
    }
    #endregion

    #region Реализация класса "MyList"
   unsafe public class MyList
        {
            #region Поля, имеющиеся в классе MyList
           MyListNode *List;
            #endregion
         //некоторые необходимые методы...
        }
При попытке компиляции данного кода на строчке с объявлением полей класса MyList получаем ошибку:"Невозможно получить адрес, определить размер или объявить указатель на управляемый тип".
Почитал на MSDN'е как в принципе можно бороться с данной ошибкой - необходимо указать полю определенный метод доступа, НО как написано в том же MSDN такое действие применимо только к стандартным типам(double, long int и т.д.).
Патологически не понимаю что "такого сверх-естественного я прошу откомпилировать". Может кто сталкивался с данной ошибкой? Кто и как с ней боролся?
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
Mixim вне форума Ответить с цитированием
Старый 06.01.2011, 13:24   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Ты хочешь получить указатель на нечто, управляемое не тобой. Это нечто (экземпляр класса MyListNode) может изменить свое расположение в памяти в любой момент, так что твой указатель потеряет смысл. Должна быть какая-то невероятно важная необходимость, чтобы доступаться к managed объектам через указатели на них. Например, передача их в WinAPI. Пока такой необходимости нет, использовать unsafe код и указатели — вредить себе самому.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание класса! 4AKI_4ak Паскаль, Turbo Pascal, PascalABC.NET 5 23.09.2010 14:09
Создание класса Ex_123 Помощь студентам 0 16.05.2010 21:13
Создание класса stscolt Общие вопросы .NET 1 27.12.2009 23:14
Создание класса Stanislav Общие вопросы Delphi 8 15.05.2008 23:34
создание класса Siren Помощь студентам 1 07.05.2008 19:19