Array.Clone 方法
创建 Array 的浅表副本。
**命名空间:**System
**程序集:**mscorlib(在 mscorlib.dll 中)
语法
声明
Public Function Clone As Object
用法
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
返回值
Array 的浅表副本。
备注
Array 的浅表副本仅复制 Array 的元素(无论它们是引用类型还是值类型),但不复制这些引用所引用的对象。新 Array 中的引用与原始 Array 中的引用指向相同的对象。
相比之下,Array 的深层副本会复制元素和元素直接或间接引用的一切。
复本与原始 Array 的 Type 相同。
此方法的运算复杂度为 O(n),其中 n 是 Length。
示例
下面的代码示例克隆一个 System.Globalization.CultureInfo 数组并演示浅表副本的行为。
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 -.
*/
平台
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