मैं सी # डीप कॉपी और शालो कॉपी सीख रहा हूं। Demo_obj1 में परिवर्तन के बाद, ऑब्जेक्ट वैल्यू बदल दिया गया है लेकिन सूची अपडेट नहीं की गई है, लेकिन demo_obj2 ऑब्जेक्ट वैल्यू बदल दी गई है और सूची मूल्य भी अपडेट किया गया है। किसी को पता है कि यहाँ क्या हो रहा है? धन्यवादक्लोन में अजीब परिणाम()
दृश्य स्टूडियो 2017
नेट ढांचे 4,6
public class Demo : ICloneable
{
public int Value { get; set; }
public string UID { get; set; }
public Demo(int nValue)
{
Value = nValue;
}
public object Clone()
{
return this.MemberwiseClone();
}
}
public class Program
{
public static void Print(List<Demo> objList)
{
Console.WriteLine();
foreach (Demo objDemo in objList)
{
Console.WriteLine("{0} = {1}", objDemo.UID, objDemo.Value);
}
}
public static void Main()
{
List<Demo> objList = new List<Demo>();
Demo obj1 = new Demo(100);
obj1.UID = "Demo_obj1";
Demo obj2 = (Demo)obj1.Clone();
obj2.UID = "Demo_obj2";
objList.Add(obj1);
objList.Add(obj2);
Print(objList);
obj1 = obj2;
obj1.Value = 200;
Console.WriteLine();
Console.WriteLine(obj1.UID + " = " + obj1.Value);
Console.WriteLine(obj2.UID + " = " + obj2.Value);
Print(objList);
Console.ReadKey();
}
}
आउटपुट:
Demo_obj1 = 100
Demo_obj2 = 100
Demo_obj2 = 200
Demo_obj2 = 200
Demo_obj1 = 100
Demo_obj2 = 200
@VladimirArustamian वह पहले से ही –
पर अपने कोड में सदस्यwiseक्लोन का उपयोग करता है एक और वर्णनात्मक शीर्षक उचित होगा। – user1803551