Я попытался найти свой ответ и нашел их в отношении C, а не C#, поэтому подумал о его публикации.Создание мелкой копии структур в C#
Вопрос здесь может быть тривиальным.
В соответствии с моим пониманием (в простых терминах)
После копирования завершено
неполной копия -> основной и скопировать объект (ссылка или типа значения) должны указывать на тот же объект в памяти
DeepCopy -> главный и скопированный объект (ссылочный или тип значения) должен указывать на разные объекты в памяти.
Продолжая это, у меня есть структура на C# и попытка сделать мелкую копию того же самого. Я попытался использовать метод «MemberwiseClone», но я думаю, что он работает только для ссылочных типов. Для типов значений я думаю, что метод «MemberwiseClone» помещает его в объект и распаковывает его в другой адрес памяти в стеке.
Что я пробовал, как показано ниже.
Вопрос: как (если вообще возможно) создать мелкую копию простой структуры?
Надеюсь, мои основы верны и не говорят мусора. Пожалуйста, поправьте меня, если я ошибаюсь в любых заявлениях, которые я сделал.
С уважением,
Самар
struct MyStruct : ICloneable
{
public int MyProperty { get; set; }
public object Clone()
{
return this.MemberwiseClone();//boxing into object
}
}
private void btnChkStr_Click(object sender, EventArgs e)
{
MyStruct struct1 = new MyStruct();
struct1.MyProperty = 1;
//MyStruct struct2 = struct1; //This will create a deep copy
MyStruct struct2 = (MyStruct)(struct1.Clone());//unboxing into structure hence allocating a different memory address
struct2.MyProperty = 2;
MessageBox.Show(struct1.MyProperty.ToString()); //still showing 1
}
[структура] (http://msdn.microsoft.com/library/saxz13w4.aspx):. «Структуры копируются по заданию При struct присваивается новой переменной, все данные копируются, и любая модификация новой копии делает n или изменить данные для оригинальной копии. Это важно помнить при работе с коллекциями типов значений, таких как «Словарь <строка, myStruct>». - У вас не может быть мелкой копии структуры. – Corak
Попытка иметь мелкую копию «изменчивого» текста, значение типа неправильное – doctorlove
Зачем вам это нужно? – musefan