(0) exportieren Drucken
Alle erweitern

Object.MemberwiseClone-Methode

Erstellt eine flache Kopie des aktuellen Object.

Namespace: System
Assembly: mscorlib (in mscorlib.dll)

protected Object MemberwiseClone ()
protected Object MemberwiseClone ()
protected function MemberwiseClone () : Object

Rückgabewert

Eine flache Kopie des aktuellen Object.

Die MemberwiseClone-Methode erstellt eine flache Kopie, indem ein neues Objekt erstellt wird und anschließend die nicht statischen Felder des aktuellen Objekts in das neue Objekt kopiert werden. Wenn ein Feld ein Werttyp ist, wird das Feld bitweise kopiert. Wenn es sich bei dem Feld um einen Verweistyp handelt, wird nicht das Objekt, auf das verwiesen wird, sondern der Verweis kopiert. Daher verweisen das ursprüngliche Objekt und der Klon auf dasselbe Objekt.

Als Beispiel soll ein Objekt X dienen, das auf die Objekte A und B verweist. Objekt B wiederum verweist auf ein Objekt C. Eine flache Kopie von X erstellt das neue Objekt X2, das ebenfalls auf die Objekte A und B verweist. Eine tiefe Kopie von X erstellt ein neues Objekt X2, das auf die neuen Objekte A2 und B2 verweist, die Kopien von A und B sind. B2 wiederum verweist auf das neue Objekt C2, das eine Kopie von C ist. Verwenden Sie eine Klasse, die die ICloneable-Schnittstelle implementiert, um eine tiefe oder flache Kopie eines Objekts zu erstellen.

Das folgende Codebeispiel veranschaulicht das Kopieren einer Instanz einer Klasse mit MemberwiseClone.

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();
   }
}

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 für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0
Anzeigen:
© 2014 Microsoft