Глюк List, ссылка - C#
Формулировка задачи:
Объясните пожалуйста следующий эффект(ссылки)
У меня есть класс(моего типа) PointClass.
Есть переменная TochkaA данного класса,
а так же List<PointClass> Points
В нулевую ячейку LISTа я записываю TochkaA со значением TochkaA.X=1;
Затем просто меняю TochkaA.X=2 а получаю изменение в Points[0]
При этом Points[1] не страдает.
Даже не знаю как Google запрос построить.
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()); }
Решение задачи: «Глюк 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]? } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д