Я создал класс:
public class Figure
{
public Point [] Cordinates { get; set; }
public Figure(Point[] Cordinates)
{
this.Cordinates = Cordinates;
}
}
Также сделал массив:
private static Figure[] _figureArray = new Figure[5]
{
new Figure(new Point[] {
new Point(0, 0), new Point(1, 0),
new Point(2, 0), new Point(3, 0)
},
... //Дальше описанны остальные элементы массива
};
Далее я создаю переменную и присваиваю ей элемент массива:
Figure CurrentFigure = _figureArray[0];
Если я меняю свойство у данной переменной:
CurrentFigure.Cordinates[0].X = 1;
То свойство меняется и у элементов массива.
Скажите пожалуйста, как это исправить?
У меня получилось реализовать клонирование таким образом
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Drawing;
namespace Rextester
{
public class Program
{
public class Figure
{
public Point [] Cordinates { get; set; }
public Figure(Point[] Cordinates)
{
this.Cordinates = Cordinates;
}
public Figure Clone()
{
Figure other = (Figure) this.MemberwiseClone();
other.Cordinates = new Point[this.Cordinates.Length];
for (int i=0; i<this.Cordinates.Length; i++){
other.Cordinates[i] = new Point(this.Cordinates[i].X,this.Cordinates[i].Y);
}
return other;
}
}
private static Figure[] _figureArray = new Figure[2]
{
new Figure(new Point[] {
new Point(0, 0), new Point(1, 0),
new Point(2, 0), new Point(3, 0)
}),
new Figure(new Point[] {
new Point(0, 0), new Point(1, 0),
new Point(2, 0), new Point(3, 0)
})
};
public static void Main(string[] args)
{
Figure CurrentFigure = _figureArray[0].Clone();
CurrentFigure.Cordinates[0].X = 12;
Console.WriteLine("{0:G}",_figureArray[0].Cordinates[0].X);
Console.WriteLine("{0:G}",CurrentFigure.Cordinates[0].X);
}
}
}
Реализуй метод Клон:
class Figure: ICloneable
{
public Figure Clone()
{
return this.MemberwiseClone();
}
}
и в нужном месте:
Figure CurrentFigure = _figureArray[0].Clone();
Это случилось по той причине, что автор вопроса не понимает разницы между референс типом и значимым типом данных. Советую почитать об этом детальнее т.к. это важная часть программирования на шарпе.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Вопрос заключается в следующем : Есть база данных postgre, в ней есть таблица вот такого вида Из за сбоя в службе которая собирает статистику...
В PHP новичок от слова совсем, появилась задача написать генератор случайных чисел с идентификаторами, в питоне например про такой тип, как...
Возникла проблема - API отдаёт данные в JSON формате, примерно в таком виде: