public void Run1()
        {
            {
                Console.WriteLine("Property");
                A a = new A();
                Console.WriteLine("Исходное значение Mutable.X: {0}", a.Mutable.X);
                a.Mutable.IncrementX();
                a.Mutable.Cobj.x++;
                Console.WriteLine($"x in C {a.Mutable.Cobj.x}");
                Console.WriteLine($"Id {a.Mutable.Id}");
                Console.WriteLine($"Id {a.Mutable.Id}");
                Console.WriteLine("Mutable.X после вызова IncrementX(): {0} \n", a.Mutable.X);
            }

            {
                Console.WriteLine("readonly field");
                B b = new B();
                Console.WriteLine("Исходное значение M.X: {0}", b.M.X);
                b.M.IncrementX();
                b.M.IncrementX();
                b.M.IncrementX();
                Console.WriteLine($"Id {b.M.Id}");
                Console.WriteLine($"Id {b.M.Id}");
                Console.WriteLine("M.X после трех вызовов IncrementX: {0}\n", b.M.X);
            }

            {
                Console.WriteLine("List");
                List <Mutable> lm = new List <Mutable> {
                    new Mutable(x: 5, y: 5)
                };
                //lm[0].Y++; // Ошибка компиляции
                Console.WriteLine("Исходное значение M.X: {0}", lm[0].X);
                lm[0].IncrementX(); // ведет к изменению временной переменной
                Console.WriteLine($"Id {lm[0].Id}");
                Console.WriteLine("Mutable.X после вызова IncrementX(): {0}\n", lm[0].X);
            }

            {
                Console.WriteLine("Array");
                Mutable[] am = new Mutable[] { new Mutable(x: 5, y: 5) };
                Console.WriteLine("Исходные значения X: {0}, Y: {1}", am[0].X, am[0].Y);
                am[0].Y++;
                am[0].IncrementX();
                Console.WriteLine($"Id {am[0].Id}");
                Console.WriteLine("Новые значения X: {0}, Y: {1}\n", am[0].X, am[0].Y);
            }

            {
                Console.WriteLine("Array in List");
                Mutable[]       am  = new Mutable[] { new Mutable(x: 5, y: 5) };
                IList <Mutable> lst = am;
                Console.WriteLine("Исходные значения X: {0}, Y: {1}", lst[0].X, lst[0].Y);
                //lst[0].Y++; // Ошибка компиляции
                lst[0].IncrementX(); // изменение временной переменной
                Console.WriteLine($"Id {lst[0].Id}");
                Console.WriteLine("Новые значения X: {0}, Y: {1} \n", lst[0].X, lst[0].Y);
            }

            {
                //var x = new { Items = new List<int> { 1, 2, 3 }.GetEnumerator() };
                //while (x.Items.MoveNext())
                //{
                //    Console.WriteLine(x.Items.Current);
                //}
            }
        }
 public A()
 {
     Mutable = new Mutable(x: 5, y: 5);
 }