Доброго времени суток Вам! Возник такой вопрос, ответ на который по хорошему должен быть тривиален, но найти его я пока не смог. Как представить в C# список в общепринятом понимании, но без использования unsafe кода, то есть не используя ссылки и указатели напрямую. Кто-то говорил, что эта задача легко решается при помощи классов... Прошу помощи. За любую идею буду очень благодарен.
Здравствуйте, Артемий, Вы писали:
А>Доброго времени суток Вам! Возник такой вопрос, ответ на который по хорошему должен быть тривиален, но найти его я пока не смог. Как представить в C# список в общепринятом понимании, но без использования unsafe кода, то есть не используя ссылки и указатели напрямую. Кто-то говорил, что эта задача легко решается при помощи классов... Прошу помощи. За любую идею буду очень благодарен.
Никаких проблем.
class Node
{
Node next; // <-- физически это ссылка, а не объект как в плюсах.
}
Можно разъяснить чуть подробней. Немного не могу сообразить. И как в таком случае выстроить цепочку списка? Если в плюсах мы просто сохраняли в памяти данные и при помощи указателей "гуляли" по данным, как быть тут?
Здравствуйте, Артемий, Вы писали:
А>Можно разъяснить чуть подробней. Немного не могу сообразить. И как в таком случае выстроить цепочку списка? Если в плюсах мы просто сохраняли в памяти данные и при помощи указателей "гуляли" по данным, как быть тут?
class Node<T>
{
public Node(T data, Node<T> next) { Data = data; Next = next; }
public Node() {}
public readonly Node Next;
public readonly Data;
}
...
var list = new Node<int>(1, new Node<int>(2, new Node<int>(3, new Node<int>())));
Далее берем list и перебираем все его Next-ты. Если Next не null, то можно считать следующий элемент.
Здравствуйте, Артемий, Вы писали:
А>Можно разъяснить чуть подробней. Немного не могу сообразить. И как в таком случае выстроить цепочку списка? Если в плюсах мы просто сохраняли в памяти данные и при помощи указателей "гуляли" по данным, как быть тут?
Такая запись в C# дял классов:
class Node
{
Node next;
}
соотвествует в C++ такой:
class Node
{
Node *next;
}
Здравствуйте, IT, Вы писали:
IT>Такая запись в C# дял классов:
IT>IT>class Node
IT>{
IT> Node next;
IT>}
IT>
IT>соотвествует в C++ такой:
IT>IT>class Node
IT>{
IT> Node *next;
IT>}
IT>
скорее, такой
class Node
{
boost::shared_ptr<Node> next;
}