Это проект C# Windows Forms. У меня есть сетка на форме. Чтобы получить данные для сетки, я запускаю процедуру SQL и сохраняю результаты в классе. Я хочу иметь копию этого класса, чтобы знать, какие значения были, прежде чем пользователь изменит их в сетке. Поэтому я назначаю класс другому классу. Затем я назначаю первый класс в качестве источника данных сетки. Однако после внесения изменений и исходный класс, и копия имеют одинаковые значения. Как мне предотвратить это?
Вот мой код:
List<Unreceive> receivedItems = new List<Unreceive>();
List<Unreceive> listItems = mpBLL.GetMPItemsReceived();
receivedItems = listItems;
gcUnreceive.DataSource = listItems;
на данный момент, скажем, ReceiveItems.quantity и listItems.quantity имеют значение 100.
Пользователь изменяет данные в сетке так, чтобы количество составляло 50. Это вызывает следующий код:
private void gvUnreceive_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
{
DevExpress.XtraGrid.Views.Grid.GridView gridView = (DevExpress.XtraGrid.Views.Grid.GridView) sender;
int index = gridView.GetDataSourceRowIndex(rowHandle);
Unreceive selectedItem = listItems[index];
Unreceive originalItem = receivedItems[index];
int newQuantity = selectedItem.quantity;
int originalQuantity = originalItem.quantity;
}
В этот момент я хочу: newQuantity = 50; originalQuantity = 100;
Но я получаю следующее: newQuantity = 50; исходное количество = 50;
Это похоже на то, что я передал переменную по ссылке, а не по значению, но я нигде не передавал ее. Как это исправить, чтобы класс receiveItems не зависел от того, что происходит с классом listItems или сеткой данных?