Хорошо, у меня есть вопрос, который я считаю простым ... или случай, когда я начинающий в C #.
У меня есть массив пользовательских объектов (clsScriptItem), которые я заполняю из базы данных. После того, как элементы загружены, я хочу создать их резервную копию в массиве «backup», чтобы я мог вернуть информацию обратно после изменения основного массива. Однако когда я использую CopyTo для копирования массива, а затем изменяю исходный массив, резервный массив также изменяется ... Я думал, что CopyTo просто копирует значения + структуру из одного массива в другой.
private void backupItems()
{
//lastSavedItems and items are both of type clsScriptItem[]
//(declaration not shown)
lastSavedItems = new clsScriptItem[items.Length];
items.CopyTo(lastSavedItems, 0);
//items[0].nexts[0] is 2
//lastSavedItems[0].nexts[0] is 2
items[0].nexts[0] = "-1";
//items[0].nexts[0] is -1
//lastSavedItems[0].nexts[0] is also -1
}
Как сделать резервную копию этих данных, не связывая два массива ??
ОБНОВЛЕНИЕ:
Я обновил функцию резервного копирования до этого
private void backupItems()
{
lastSavedItems = new clsScriptItem[items.Length];
for (int i = 0; i < items.Length; i++)
lastSavedItems[i] = (clsScriptItem)items[i].Clone();
items[0].nexts[0] = "-1";
}
И я обновил свой класс таким образом ....
public class clsScriptItem : ICloneable
{
//other declarations...
object ICloneable.Clone() { return Clone(); }
public clsScriptItem Clone()
{
return ((clsScriptItem)MemberwiseClone());
}
}
** - и то же самое происходит .. Есть мысли? **