PDA

View Full Version : سوال: کپی کردن اشیاء یک کلاس بدون Refrence



behzadkhan
شنبه 24 خرداد 1393, 23:52 عصر
با سلام

یک کلاس به نامه Letter درست می کنیم.

دو تا شی به نام L1 و L2 از آن ایجام می کنیم.

مقدار L1 را برابر L2 قرار می دهیم.(;L1=L2)

حالا هر جا مقدار L2 را تغییر می دهیم به L1 هم اعمال می شود.(کپی پیشفرض اشیاء در سی شارپ بصورت Reference می باشد.)

================================

می خواهیم یک متد تعریف (یا هر راهی که وجود دارد) کنیم که عملی کپی کردن را بدون Reference انجام دهد.

با تشکر

plus
یک شنبه 25 خرداد 1393, 00:09 صبح
1) با استفاده از متد MemberwiseClone (که مربوط به کلاس Object هست) میتونید یک ShallowCopy از شی مربوطه بگیرین.به طور خلاصه، در این کپی، یک شی جدید ساخته میشه و عضوهای Value Type شی اول به شی دوم کپی میشن ولی عضو های Reference Type فقط Reference شون کپی میشه.
http://msdn.microsoft.com/en-us/library/system.object.memberwiseclone.aspx

2) کلاس Letter، بایستی ICloneable رو پیاده سازی کنه و در متد Clone، یک Exact Copy از خودش بسازه و برگردونه.برای این کار باید تمامی عضوها، Exact Copy بشن.در این حالت با فراخوانی متد Clone میتونید یک کپی از شی داشته باشید.
http://msdn.microsoft.com/en-us/library/system.icloneable(v=vs.110).aspx