Home > Programming > การ Cloning Object ใน .NET Framework ด้วย Method “MemberwiseClone”

การ Cloning Object ใน .NET Framework ด้วย Method “MemberwiseClone”


Reference: http://www.csharp411.com/c-object-clone-wars/

โดยปกติเวลาส่งผ่าน parameter ด้วย reference type หรือ class นั้น จะเป็นการ copy เฉพาะ Reference แต่ object จริงๆ นั้นไม่ได้ถูก copy ไปด้วย แต่ถ้าต้องการที่จะ copy object จริงๆ นั้นก็ยังพอวิธีอยู่บ้างครับ

ใน .net framework ทุกๆ class จะ inherits มาจาก super type ชื่อ System.Object โดยจะได้รับ method อยู่หลายตัว ซึ่งมี method อยู่ตัวหนึ่งที่น่าสนใจคือ MemberwiseClone โดยจะเป็น protected method ครับ

ใน class ที่เราต้องการที่จะให้สามารถ clone ได้ อาจจะใช้ Interface “ICloneable” ดังตัวอย่างครับ โดยมีการปรับปรุง เล็กน้อยเพื่อให้เป็น Type-safe มากขึ้น

public class Person : ICloneable
{
    public string Name;
    object ICloneable.Clone()
    {
        return this.Clone();
    }
    public Person Clone()
    {
        return (Person)this.MemberwiseClone();
    }
}

โดยเวลาเรียกใช้งานก็สามารถทำได้ ดัง code ด้านล่างครับ

Person Somchai = new Person();
Somchai.Name = "Somchai Seabea";
Person somchaiClone = Somchai.Clone();

หลักสูตรอบรม: .net programming (click)

Categories: Programming
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: