Fixed и структуры: создать дерево - C#
Формулировка задачи:
Привет всем!
Момогите,у меня следующая проблема:
Мне нужно создать дерево на с#.Так как я знаю немного С++ , я решил сделать ето с помощью указателей(Я использую "небезопасный код" ).Именно в етом направлении мне и нужно(таково задание).
Я создал структуру branch ,которая хранит указатель на папу,и 2 сыновей , значение ветки.Код:
И сам клас деревья , который будет создавать ,добавлять , кароче говоря создавать связи между обектами етих структур.Но прикол в чем: создаетса екземляр структуры нормально,все заполняетса и тд..Но когда конструктор завершает свою роботу,происходят страшные вещи..Сборщик мусора c# куда-то тянет мои екземляры структур в другое место,а указатели ,которые вказывали на них,указывают теперь на мусор...Мне нужно "зафиксировать" ети екземпляры в памяти,что б можна было к ним нормально доступится через указатель.Помогите!Как я уже не пробывал.В итоге ошибки и тд.Выставляю код класа,без fixed .Кто сможет,помогите плс!Ато я уже запарился.(сори за русский,я сам с Украины)
unsafe struct branch
{
public int value;
public branch* parent;
public branch* lSon;
public branch* rSon;
}unsafe class three
{
public branch* root;
public branch* current;
public three(){
branch tmp = new branch();
tmp.value = 3;
tmp.lSon=tmp.rSon=null;
root = &tmp;
current = &tmp;
Console.Write(tmp.value + "\n");
}
public unsafe void output()
{
Console.Write(this.current->value);
}
};Решение задачи: «Fixed и структуры: создать дерево»
textual
Листинг программы
class Foo{
Foo myPointer; // "указатель" на следующий элемент цепочки
public Foo Next { get { return myPointer; } } //можем перемещаться по цепочке
};