Freigeben über


Array.Clone-Methode

Erstellt eine flache Kopie von Array.

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

Syntax

'Declaration
Public Function Clone As Object
'Usage
Dim instance As Array
Dim returnValue As Object

returnValue = instance.Clone
public Object Clone ()
public:
virtual Object^ Clone () sealed
public final Object Clone ()
public final function Clone () : Object

Rückgabewert

Eine flache Kopie von Array.

Hinweise

Bei einer flachen Kopie eines Array werden nur die Elemente des Array kopiert, unabhängig davon, ob sie Verweis- oder Werttypen sind. Die Objekte auf die verwiesen wird, werden jedoch nicht kopiert. Die Verweise im neuen Array zeigen auf dieselben Objekte wie die Verweise im ursprünglichen Array.

Im Gegensatz dazu werden bei einer tiefen Kopie eines Array die Elemente sowie alle untergeordneten Elemente kopiert, auf die direkt oder indirekt verwiesen wird.

Der Klon hat denselben Type wie das ursprüngliche Array.

Diese Methode ist eine O(n)-Operation, wobei nLength ist.

Beispiel

Im folgenden Codebeispiel wird ein System.Globalization.CultureInfo-Array geklont und das Verhalten einer flachen Kopie veranschaulicht.

Imports System
Imports System.Globalization

Public Class SamplesArray

    Public Shared Sub Main()

        ' Create and initialize a new CultureInfo array.
        Dim ci0 As New CultureInfo("ar-SA", False)
        Dim ci1 As New CultureInfo("en-US", False)
        Dim ci2 As New CultureInfo("fr-FR", False)
        Dim ci3 As New CultureInfo("ja-JP", False)
        Dim arrCI() As CultureInfo = {ci0, ci1, ci2, ci3}

        ' Create a clone of the CultureInfo array.
        Dim arrCIClone As CultureInfo() = CType(arrCI.Clone(), CultureInfo())

        ' Replace an element in the clone array.
        Dim ci4 As New CultureInfo("th-TH", False)
        arrCIClone(0) = ci4

        ' Display the contents of the original array.
        Console.WriteLine("The original array contains the following values:")
        PrintIndexAndValues(arrCI)

        ' Display the contents of the clone array.
        Console.WriteLine("The clone array contains the following values:")
        PrintIndexAndValues(arrCIClone)

        ' Display the DateTimeFormatInfo.DateSeparator for the fourth element in both arrays.
        Console.WriteLine("Before changes to the clone:")
        Console.WriteLine("   Original: The DateTimeFormatInfo.DateSeparator for {0} is {1}.", arrCI(3).Name, arrCI(3).DateTimeFormat.DateSeparator)
        Console.WriteLine("      Clone: The DateTimeFormatInfo.DateSeparator for {0} is {1}.", arrCIClone(3).Name, arrCIClone(3).DateTimeFormat.DateSeparator)

        ' Replace the DateTimeFormatInfo.DateSeparator for the fourth element in the clone array.
        arrCIClone(3).DateTimeFormat.DateSeparator = "-"

        ' Display the DateTimeFormatInfo.DateSeparator for the fourth element in both arrays.
        Console.WriteLine("After changes to the clone:")
        Console.WriteLine("   Original: The DateTimeFormatInfo.DateSeparator for {0} is {1}.", arrCI(3).Name, arrCI(3).DateTimeFormat.DateSeparator)
        Console.WriteLine("      Clone: The DateTimeFormatInfo.DateSeparator for {0} is {1}.", arrCIClone(3).Name, arrCIClone(3).DateTimeFormat.DateSeparator)

    End Sub 'Main

    Public Shared Sub PrintIndexAndValues(myArray As Array)
        Dim i As Integer
        For i = myArray.GetLowerBound(0) To myArray.GetUpperBound(0)
            Console.WriteLine(vbTab + "[{0}]:" + vbTab + "{1}", i, myArray.GetValue(i))
        Next i
    End Sub 'PrintIndexAndValues 

End Class 'SamplesArray


'This code produces the following output.
'
'The original array contains the following values:
'        [0]:    ar-SA
'        [1]:    en-US
'        [2]:    fr-FR
'        [3]:    ja-JP
'The clone array contains the following values:
'        [0]:    th-TH
'        [1]:    en-US
'        [2]:    fr-FR
'        [3]:    ja-JP
'Before changes to the clone:
'   Original: The DateTimeFormatInfo.DateSeparator for ja-JP is /.
'      Clone: The DateTimeFormatInfo.DateSeparator for ja-JP is /.
'After changes to the clone:
'   Original: The DateTimeFormatInfo.DateSeparator for ja-JP is -.
'      Clone: The DateTimeFormatInfo.DateSeparator for ja-JP is -.
using System;
using System.Globalization;
public class SamplesArray  {

   public static void Main()  {

      // Create and initialize a new CultureInfo array.
      CultureInfo ci0 = new CultureInfo( "ar-SA", false );
      CultureInfo ci1 = new CultureInfo( "en-US", false );
      CultureInfo ci2 = new CultureInfo( "fr-FR", false );
      CultureInfo ci3 = new CultureInfo( "ja-JP", false );
      CultureInfo[] arrCI = new CultureInfo[] { ci0, ci1, ci2, ci3 };

      // Create a clone of the CultureInfo array.
      CultureInfo[] arrCIClone = (CultureInfo[]) arrCI.Clone();

      // Replace an element in the clone array.
      CultureInfo ci4 = new CultureInfo( "th-TH", false );
      arrCIClone[0] = ci4;

      // Display the contents of the original array.
      Console.WriteLine( "The original array contains the following values:" );
      PrintIndexAndValues( arrCI );

      // Display the contents of the clone array.
      Console.WriteLine( "The clone array contains the following values:" );
      PrintIndexAndValues( arrCIClone );

      // Display the DateTimeFormatInfo.DateSeparator for the fourth element in both arrays.
      Console.WriteLine( "Before changes to the clone:" );
      Console.WriteLine( "   Original: The DateTimeFormatInfo.DateSeparator for {0} is {1}.", arrCI[3].Name, arrCI[3].DateTimeFormat.DateSeparator );
      Console.WriteLine( "      Clone: The DateTimeFormatInfo.DateSeparator for {0} is {1}.", arrCIClone[3].Name, arrCIClone[3].DateTimeFormat.DateSeparator );

      // Replace the DateTimeFormatInfo.DateSeparator for the fourth element in the clone array.
      arrCIClone[3].DateTimeFormat.DateSeparator = "-";

      // Display the DateTimeFormatInfo.DateSeparator for the fourth element in both arrays.
      Console.WriteLine( "After changes to the clone:" );
      Console.WriteLine( "   Original: The DateTimeFormatInfo.DateSeparator for {0} is {1}.", arrCI[3].Name, arrCI[3].DateTimeFormat.DateSeparator );
      Console.WriteLine( "      Clone: The DateTimeFormatInfo.DateSeparator for {0} is {1}.", arrCIClone[3].Name, arrCIClone[3].DateTimeFormat.DateSeparator );

   }

   public static void PrintIndexAndValues( Array myArray )  {
      for ( int i = myArray.GetLowerBound(0); i <= myArray.GetUpperBound(0); i++ )
         Console.WriteLine( "\t[{0}]:\t{1}", i, myArray.GetValue( i ) );
   }

}


/* 
This code produces the following output.

The original array contains the following values:
        [0]:    ar-SA
        [1]:    en-US
        [2]:    fr-FR
        [3]:    ja-JP
The clone array contains the following values:
        [0]:    th-TH
        [1]:    en-US
        [2]:    fr-FR
        [3]:    ja-JP
Before changes to the clone:
   Original: The DateTimeFormatInfo.DateSeparator for ja-JP is /.
      Clone: The DateTimeFormatInfo.DateSeparator for ja-JP is /.
After changes to the clone:
   Original: The DateTimeFormatInfo.DateSeparator for ja-JP is -.
      Clone: The DateTimeFormatInfo.DateSeparator for ja-JP is -.

*/
using namespace System;
using namespace System::Globalization;
void PrintIndexAndValues( Array^ myArray );
int main()
{
   
   // Create and initialize a new CultureInfo array.
   CultureInfo^ ci0 = gcnew CultureInfo( "ar-SA",false );
   CultureInfo^ ci1 = gcnew CultureInfo( "en-US",false );
   CultureInfo^ ci2 = gcnew CultureInfo( "fr-FR",false );
   CultureInfo^ ci3 = gcnew CultureInfo( "ja-JP",false );
   array<CultureInfo^>^arrCI = {ci0,ci1,ci2,ci3};
   
   // Create a clone of the CultureInfo array.
   array<CultureInfo^>^arrCIClone = (array<CultureInfo^>^)arrCI->Clone();
   
   // Replace an element in the clone array.
   CultureInfo^ ci4 = gcnew CultureInfo( "th-TH",false );
   arrCIClone[ 0 ] = ci4;
   
   // Display the contents of the original array.
   Console::WriteLine( "The original array contains the following values:" );
   PrintIndexAndValues( arrCI );
   
   // Display the contents of the clone array.
   Console::WriteLine( "The clone array contains the following values:" );
   PrintIndexAndValues( arrCIClone );
   
   // Display the DateTimeFormatInfo.DateSeparator for the fourth element in both arrays.
   Console::WriteLine( "Before changes to the clone:" );
   Console::WriteLine( "   Original: The DateTimeFormatInfo->DateSeparator for {0} is {1}.", arrCI[ 3 ]->Name, arrCI[ 3 ]->DateTimeFormat->DateSeparator );
   Console::WriteLine( "      Clone: The DateTimeFormatInfo->DateSeparator for {0} is {1}.", arrCIClone[ 3 ]->Name, arrCIClone[ 3 ]->DateTimeFormat->DateSeparator );
   
   // Replace the DateTimeFormatInfo.DateSeparator for the fourth element in the clone array.
   arrCIClone[ 3 ]->DateTimeFormat->DateSeparator = "-";
   
   // Display the DateTimeFormatInfo.DateSeparator for the fourth element in both arrays.
   Console::WriteLine( "After changes to the clone:" );
   Console::WriteLine( "   Original: The DateTimeFormatInfo->DateSeparator for {0} is {1}.", arrCI[ 3 ]->Name, arrCI[ 3 ]->DateTimeFormat->DateSeparator );
   Console::WriteLine( "      Clone: The DateTimeFormatInfo->DateSeparator for {0} is {1}.", arrCIClone[ 3 ]->Name, arrCIClone[ 3 ]->DateTimeFormat->DateSeparator );
}

void PrintIndexAndValues( Array^ myArray )
{
   for ( int i = myArray->GetLowerBound( 0 ); i <= myArray->GetUpperBound( 0 ); i++ )
      Console::WriteLine( "\t[{0}]:\t{1}", i, myArray->GetValue( i ) );
}

/* 
This code produces the following output.

The original array contains the following values:
        [0]:    ar-SA
        [1]:    en-US
        [2]:    fr-FR
        [3]:    ja-JP
The clone array contains the following values:
        [0]:    th-TH
        [1]:    en-US
        [2]:    fr-FR
        [3]:    ja-JP
Before changes to the clone:
   Original: The DateTimeFormatInfo.DateSeparator for ja-JP is /.
      Clone: The DateTimeFormatInfo.DateSeparator for ja-JP is /.
After changes to the clone:
   Original: The DateTimeFormatInfo.DateSeparator for ja-JP is -.
      Clone: The DateTimeFormatInfo.DateSeparator for ja-JP is -.

*/
import System.*;
import System.Globalization.*;

public class SamplesArray
{
    public static void main(String[] args)
    {
        // Create and initialize a new CultureInfo array.
        CultureInfo ci0 = new CultureInfo("ar-SA", false);
        CultureInfo ci1 = new CultureInfo("en-US", false);
        CultureInfo ci2 = new CultureInfo("fr-FR", false);
        CultureInfo ci3 = new CultureInfo("ja-JP", false);
        CultureInfo arrCI[] = new CultureInfo[] { ci0, ci1, ci2, ci3 };
        // Create a clone of the CultureInfo array.
        CultureInfo arrCIClone[] = (CultureInfo[])arrCI.Clone();
        // Replace an element in the clone array.
        CultureInfo ci4 = new CultureInfo("th-TH", false);
        arrCIClone.set_Item(0, ci4);
        // Display the contents of the original array.
        Console.WriteLine("The original array contains the following values:");
        PrintIndexAndValues(arrCI);
        // Display the contents of the clone array.
        Console.WriteLine("The clone array contains the following values:");
        PrintIndexAndValues(arrCIClone);
        // Display the DateTimeFormatInfo.DateSeparator for the fourth element
        // in both arrays.
        Console.WriteLine("Before changes to the clone:");
        Console.WriteLine("   Original: The DateTimeFormatInfo.DateSeparator " 
            + "for {0} is {1}.", arrCI[3].get_Name(),
            arrCI[3].get_DateTimeFormat().get_DateSeparator());
        Console.WriteLine("      Clone: The DateTimeFormatInfo.DateSeparator " 
            + "for {0} is {1}.", arrCIClone[3].get_Name(),
            arrCIClone[3].get_DateTimeFormat().get_DateSeparator());
        // Replace the DateTimeFormatInfo.DateSeparator for the fourth element
        // in the clone array.
        arrCIClone[3].get_DateTimeFormat().set_DateSeparator("-");
        // Display the DateTimeFormatInfo.DateSeparator for the fourth element
        // in both arrays.
        Console.WriteLine("After changes to the clone:");
        Console.WriteLine("   Original: The DateTimeFormatInfo.DateSeparator " 
            + "for {0} is {1}.", arrCI[3].get_Name(),
            arrCI[3].get_DateTimeFormat().get_DateSeparator());
        Console.WriteLine("      Clone: The DateTimeFormatInfo.DateSeparator " 
            + "for {0} is {1}.", arrCIClone[3].get_Name(),
            arrCIClone[3].get_DateTimeFormat().get_DateSeparator());
    } //main

    public static void PrintIndexAndValues(Array myArray)
    {
        for (int i = myArray.GetLowerBound(0);
            i <= myArray.GetUpperBound(0); i++) {
            Console.WriteLine("\t[{0}]:\t{1}", System.Convert.ToString(i),
                myArray.GetValue(i));
        }
    } //PrintIndexAndValues 
} //SamplesArray

/* 
    This code produces the following output.
    The original array contains the following values:
        [0]:    ar-SA
        [1]:    en-US
        [2]:    fr-FR
        [3]:    ja-JP
    The clone array contains the following values:
        [0]:    th-TH
        [1]:    en-US
        [2]:    fr-FR
        [3]:    ja-JP
    Before changes to the clone:
    Original: The DateTimeFormatInfo.DateSeparator for ja-JP is /.
      Clone: The DateTimeFormatInfo.DateSeparator for ja-JP is /.
    After changes to the clone:
    Original: The DateTimeFormatInfo.DateSeparator for ja-JP is -.
    Clone: The DateTimeFormatInfo.DateSeparator for ja-JP is -.
*/

Plattformen

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.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

Array-Klasse
Array-Member
System-Namespace
Copy
ConstrainedCopy