سوال خود را بپرسید

توضیحات بخش

rss
سوال و جواب برای متخصصان و علاقه مندان به برنامه نویسی در همه زبان ها و همه پلت فرم ها

آمار بخش

کاربران 29
سوال ها 71
پاسخ ها 80
نظر سنجی ها 0

برترین کاربر ها

بیشترین تگ ها

2

مشکل در کپی آبجکت ها

در Csharp وقتی که یک آبجکت داریم و می خواهیم یک ابجکت دیگر از روی آن بسازیم کدی مثل کد زیر می نویسیم:

myObject original= new myObject(){a = 1};
myObject clonedObject = original;
ولی در این حالت اگر تغییری در clonedObject بدهیم، در original هم اعمال می شود یعنی
clonedObject.a = 2;
Console.WriteLine(original.a); // 2
که در این حالت به جای 1، نتیجه 2 را بر می گرداند که به معنی این است که با تغییر در آبجکت دوم، آبجکت اول هم تغییر می کند.
چه راهی برای حل این مشکل وجود داره؟
پاسخ به سوال
588بازدید

پاسخ ها (1)

3
روش های مختلفی برای انجام این کار هست .
در صورتیکه آبجکت شما serializable هست می تونید به راحتی این کار رو انجام دهید.
البته اگر از Newtonsoft در پروژه خودتون استفاده می کنید، این روش به مراتب ساده تر میشه.
برای اینکار از extension methods زیر استفاده کنید:

public static T CloneJson<T>(this T source)
{
if (Object.ReferenceEquals(source, null))
return default(T);
var deserializeSettings = new JsonSerializerSettings{ObjectCreationHandling = ObjectCreationHandling.Replace};
return JsonConvert.DeserializeObject<T>(JsonConvert.SerializeObject(source), deserializeSettings);
}
پاسخ به سوال
تعداد حروف 0