Непонятное поведение List - C#

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

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

class Program
    {
        static void Main(string[] args)
        {
            var list = new List<int> { 1, 2, 3 };
 
            var x1 = new { Items = ((IEnumerable<int>)list).GetEnumerator() };
            while (x1.Items.MoveNext())
            {
                Console.WriteLine(x1.Items.Current);
            }
 
            Console.ReadLine();
 
            var x2 = new { Items = list.GetEnumerator() };
            while (x2.Items.MoveNext())
            {
                Console.WriteLine(x2.Items.Current);
            }
        }
    }
god, why?

Решение задачи: «Непонятное поведение List»

textual
Листинг программы
            
             static void Main(string[] args)
        {
            A a = new A();
            Console.WriteLine("Исходное значение Mutable.X: {0}", a.Mutable.X);
            a.Mutable.IncrementX();
            Console.WriteLine("Mutable.X после вызова IncrementX(): {0}", a.Mutable.X);
            ////////////////////////////////////////////////////////
            /* согласно спецификации, при обращении к полю только для чтения вне конструктора,
               генерируется временная переменная, для которой и вызывается метод IncrementX   */
            ////////////////////////////////////////////////////////
            B b = new B(); 
            Console.WriteLine("Исходное значение M.X: {0}", b.M.X);
            b.M.IncrementX();
            b.M.IncrementX();
            b.M.IncrementX();
            Console.WriteLine("M.X после трех вызовов IncrementX: {0}", b.M.X);
            /////////////////////////////////////////////////////////////
            Console.ReadKey(true);
        }

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


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

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

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