Глюк List, ссылка - C#

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

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

Объясните пожалуйста следующий эффект(ссылки)
        public class PointClass
        {
            public Single X = 0;
        }
 
        public class ListGluk
        {
            PointClass TochkaA = new PointClass();
            public List<PointClass> Points = new List<PointClass>();
            public void Test()
            {
                Points.Add(new PointClass());
                Points.Add(new PointClass());
                Points[0].X = 0;
                Points[1].X = 0;
                TochkaA.X = 1;
                Points[0] = TochkaA;
                TochkaA.X = 2;
            }
        }

        private void ListGlukButton_Click(object sender, EventArgs e)
        {
            ListGluk Gluk = new ListGluk();
            Gluk.Test();
            MessageBox.Show(Gluk.Points[0].X.ToString());
        }
У меня есть класс(моего типа) PointClass. Есть переменная TochkaA данного класса, а так же List<PointClass> Points В нулевую ячейку LISTа я записываю TochkaA со значением TochkaA.X=1; Затем просто меняю TochkaA.X=2 а получаю изменение в Points[0] При этом Points[1] не страдает. Даже не знаю как Google запрос построить.

Решение задачи: «Глюк List, ссылка»

textual
Листинг программы
  public class ListGluk
        {
            PointClass TochkaA = new PointClass(); 
            public List<PointClass> Points = new List<PointClass>();
            public void Test()
            {
                Points.Add(new PointClass()); //создали в куче объект PointClass #1 и сохранили ссылку на него в  Points[0]
                Points.Add(new PointClass()); //создали в куче объект PointClass #2 и сохранили ссылку на него в  Points[1]
                Points[0].X = 0; 
                Points[1].X = 0;
                TochkaA.X = 1;
                Points[0] = TochkaA; //тут теряем ссылку на #1, и присваиваем Points[0] сслыку TochkaA, Points[1] продолжает ссылаться на #2
                TochkaA.X = 2; // изменяем объект, на который ссылается Points[0], ну и каким боком должен быть изменен Points[1]? 
            }
        }

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


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

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

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