Информация об изменениях

Сообщение Передать this в виде object от 14.03.2024 9:27

Изменено 14.03.2024 9:28 drVanо

Передать this в виде object
Нужно передать ссылку на ValueType в виде object, чтобы через object можно было менять содержимое структуры:
        struct Point
        {
            public int x;
            public int y;
            public Point(int a, int b)
            {
                x = a;
                y = b;
            }

            public void Move(int a, int b)
            {
                MoveObject(this, a, b);
                Console.WriteLine("point from this: {0}.{1}", x, y);
            }

            static void MoveObject(object obj, int a, int b)
            {
                var p = (Point)obj;
                p.x += a;
                p.y += b;
                Console.WriteLine("point from object: {0}.{1}", p.x, p.y);
            }
        }

...

        public static void Main()
        {
            var p = new Point(1, 2);
            p.Move(9, 8);
        }
Передать this в виде object
Нужно передать ссылку на ValueType в виде object, чтобы через object можно было менять содержимое структуры:
        struct Point
        {
            public int x;
            public int y;
            public Point(int a, int b)
            {
                x = a;
                y = b;
            }

            public void Move(int a, int b)
            {
                MoveObject(this, a, b);
                Console.WriteLine("point from this: {0}.{1}", x, y);
            }

            static void MoveObject(object obj, int a, int b)
            {
                var p = (Point)obj;
                p.x += a;
                p.y += b;
                Console.WriteLine("point from object: {0}.{1}", p.x, p.y);
            }
        }

...

        public static void Main()
        {
            var p = new Point(1, 2);
            p.Move(9, 8);
        }


Сейчас в MoveObject получаем копию Point, а не ссылку на начальную структуру.