Не изменяются данные при передаче в функцию с параметром ref - C#

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

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

есть класс
class MyNode
    {
        public int Data;
 
        public MyNode(int data)
        {
            Data = data;
        }
 
        public MyNode Next { get; set; }
 
        public override string ToString()
        {
            return String.Format("Data = {0}",Data);
        }
    }
есть функция
private static void Test(ref MyNode[] list)
        {
            var current = list[0];
            while (current!=null)
            {
                current = current.Next;
            }
        }
делаю так
MyNode[] list =
                {
                    new MyNode(1), new MyNode(2), new MyNode(3),
                    new MyNode(4), new MyNode(5)
                };
            for (int i = 0; i < list.Count() - 1; i++)
            {
                list[i].Next = list[i + 1];
            }
            Test(ref list);
на экране 1,2,3,4,5. Почему?? поидее должно быть 2,3,4,5. Я не прав?

Решение задачи: «Не изменяются данные при передаче в функцию с параметром ref»

textual
Листинг программы
static void Main()
        {
            var list = new MyNode(1){Next = new MyNode(2){Next = new MyNode(3){Next = new MyNode(4){Next = new MyNode(5)}}}};
            Test(list);
        }
 
        private static void Test(MyNode list)
        {
            var node = list;
            while ((node = node.Next) != null)
            {
                Console.Write(node.Data + " ");
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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