Списки в C#
От: Артемий Россия  
Дата: 18.01.09 19:33
Оценка:
Доброго времени суток Вам! Возник такой вопрос, ответ на который по хорошему должен быть тривиален, но найти его я пока не смог. Как представить в C# список в общепринятом понимании, но без использования unsafe кода, то есть не используя ссылки и указатели напрямую. Кто-то говорил, что эта задача легко решается при помощи классов... Прошу помощи. За любую идею буду очень благодарен.
Re: Списки в C#
От: IT Россия linq2db.com
Дата: 18.01.09 19:39
Оценка:
Здравствуйте, Артемий, Вы писали:

А>Доброго времени суток Вам! Возник такой вопрос, ответ на который по хорошему должен быть тривиален, но найти его я пока не смог. Как представить в C# список в общепринятом понимании, но без использования unsafe кода, то есть не используя ссылки и указатели напрямую. Кто-то говорил, что эта задача легко решается при помощи классов... Прошу помощи. За любую идею буду очень благодарен.


Никаких проблем.

class Node
{
  Node next; // <-- физически это ссылка, а не объект как в плюсах.
}
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Списки в C#
От: Артемий Россия  
Дата: 18.01.09 19:51
Оценка:
Можно разъяснить чуть подробней. Немного не могу сообразить. И как в таком случае выстроить цепочку списка? Если в плюсах мы просто сохраняли в памяти данные и при помощи указателей "гуляли" по данным, как быть тут?
Re[3]: Списки в C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.01.09 21:22
Оценка:
Здравствуйте, Артемий, Вы писали:

А>Можно разъяснить чуть подробней. Немного не могу сообразить. И как в таком случае выстроить цепочку списка? Если в плюсах мы просто сохраняли в памяти данные и при помощи указателей "гуляли" по данным, как быть тут?

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, то можно считать следующий элемент.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Списки в C#
От: IT Россия linq2db.com
Дата: 19.01.09 04:18
Оценка:
Здравствуйте, Артемий, Вы писали:

А>Можно разъяснить чуть подробней. Немного не могу сообразить. И как в таком случае выстроить цепочку списка? Если в плюсах мы просто сохраняли в памяти данные и при помощи указателей "гуляли" по данным, как быть тут?


Такая запись в C# дял классов:

class Node
{
  Node next;
}

соотвествует в C++ такой:

class Node
{
  Node *next;
}
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Списки в C#
От: Аноним  
Дата: 19.01.09 10:50
Оценка:
Здравствуйте, 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;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.