Глюк 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]?
}
}