Непонятное поведение 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); } } }
Решение задачи: «Непонятное поведение 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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д