Object.MemberwiseClone 메서드

현재 Object의 단순 복사본을 만듭니다.

네임스페이스: System
어셈블리: mscorlib(mscorlib.dll)

구문

‘선언
Protected Function MemberwiseClone As Object
‘사용 방법
Dim returnValue As Object

returnValue = Me.MemberwiseClone
protected Object MemberwiseClone ()
protected:
Object^ MemberwiseClone ()
protected Object MemberwiseClone ()
protected function MemberwiseClone () : Object

반환 값

Object의 단순 복사본입니다.

설명

MemberwiseClone 메서드는 새 개체를 만들고 현재 개체의 비정적 필드를 새 개체로 복사하여 단순 복사본을 만듭니다. 필드가 값 형식인 경우 필드의 비트별 복사가 수행됩니다. 필드가 참조 형식인 경우 참조는 복사되지만 참조되는 개체는 복사되지 않으므로 원본 개체와 복사된 개체는 동일한 개체를 참조합니다.

예를 들어, 개체 A와 개체 B를 참조하는 X라는 개체가 있다고 가정합니다. 개체 B는 또한 개체 C를 참조합니다. X의 단순 복사본은 개체 A와 B도 함께 참조하는 새 개체 X2를 만듭니다. 그러나 X의 전체 복사본은 새 개체 A2와 B2를 참조하는 새 개체 X2를 만듭니다. 새 개체 A2와 B2는 A와 B의 복사본이며 새 개체 C의 복사본인 C2를 참조합니다. 이 경우 개체의 전체 복사본 또는 단순 복사본을 만들려면 ICloneable 인터페이스를 구현하는 클래스를 사용합니다.

예제

다음 코드 예제에서는 MemberwiseClone을 사용하여 클래스의 인스턴스를 복사하는 방법을 보여 줍니다.

Imports System

Class MyBaseClass
   Public Shared CompanyName As String = "My Company"
   Public age As Integer
   Public name As String
End Class 'MyBaseClass

Class MyDerivedClass
   Inherits MyBaseClass

   Shared Sub Main()

      ' Creates an instance of MyDerivedClass and assign values to its fields.
      Dim m1 As New MyDerivedClass()
      m1.age = 42
      m1.name = "Sam"

      ' Performs a shallow copy of m1 and assign it to m2.
      Dim m2 As MyDerivedClass = CType(m1.MemberwiseClone(), MyDerivedClass)

   End Sub 'Main

End Class 'MyDerivedClass
using System;

class MyBaseClass {
   public static string CompanyName = "My Company";
   public int age;
   public string name;
}

class MyDerivedClass: MyBaseClass {

   static void Main() {
   
   // Creates an instance of MyDerivedClass and assign values to its fields.
   MyDerivedClass m1 = new MyDerivedClass();
   m1.age = 42;
   m1.name = "Sam";

   // Performs a shallow copy of m1 and assign it to m2.
   MyDerivedClass m2 = (MyDerivedClass) m1.MemberwiseClone();
   }
}
using namespace System;
ref class MyBaseClass
{
public:
   static String^ CompanyName;
   int age;
   String^ name;
};

ref class MyDerivedClass: public MyBaseClass
{
public:
   static void Test()
   {
      
      // Creates an instance of MyDerivedClass and assign values to its fields.
      MyDerivedClass^ m1 = gcnew MyDerivedClass;
      m1->age = 42;
      m1->name = "Sam";
      
      // Performs a shallow copy of m1 and assign it to m2.
      MyDerivedClass^ m2 = safe_cast<MyDerivedClass^>(m1->MemberwiseClone());
   }

};

int main()
{
   MyDerivedClass::Test();
}
import System.*;

class MyBaseClass implements ICloneable
{
    public static String companyName = "My Company";
    public int age;
    public String name;
} //MyBaseClass

class MyDerivedClass extends MyBaseClass
{
    public static void main(String[] args) throws CloneNotSupportedException
    {
        // Creates an instance of MyDerivedClass and assign 
        // values to its fields.
        MyDerivedClass m1 = new MyDerivedClass();
        m1.age = 42;
        m1.name = "Sam";

        // Performs a shallow copy of m1 and assign it to m2.
        MyDerivedClass m2 = (MyDerivedClass)m1.MemberwiseClone();
    } //main
} //MyDerivedClass
import System

class MyBaseClass {
   public static var CompanyName : String = "My Company";
   public var age : int;
   public var name : String;
}

class MyDerivedClass extends MyBaseClass {

   static function Main() {
   
   // Creates an instance of MyDerivedClass and assign values to its fields.
   var m1 : MyDerivedClass = new MyDerivedClass();
   m1.age = 42;
   m1.name = "Sam";

   // Performs a shallow copy of m1 and assign it to m2.
   var m2 : MyDerivedClass = MyDerivedClass(m1.MemberwiseClone());
   }
}

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

Object 클래스
Object 멤버
System 네임스페이스
ICloneable 인터페이스