C# Array类的浅复制Clone()与Copy()的区别
2015-07-22 14:12
811 查看
1 Array.Clone方法
命名空间:System
程序集:mscorlib
语法:
public Object Clone()
Array的浅表副本仅复制Array的元素,无论他们是引用类型还是值类型,但是不负责这些引用所引用的对象。
新Array中的引用与原始Array的引用指向相同的对象。
例:
int[] intArray1 = {1, 2};
int [] intArray2 = (int [])intArray1.Clone();
这里需要说明的是,需要使用强制类型转换,原因在于Clone()返回的类型为Object
2 Array.Copy方法
命名空间:System
程序集:mscorlib
Copy有几个重载函数:
//从第一个元素开始复制Array中的一系列元素,将它们粘贴到另一Array中(从第一个元素开始)。长度为32位整数
public static void Copy(Array sourceArray, Array destinationArray, int length)
//从第一个元素开始复制Array中的一系列元素,将它们粘贴到另一Array中(从第一个元素开始)。长度为64位整数
public static void Copy(Array sourceArray, Array destinationArray, long length)
//从指定的源索引开始,复制Array中的一系列元素,将它们粘贴到另一Array中(从指定的目标索引开始)。长度和索引指定为32位整数
public static void Copy(Array sourceArray, int sourceIndex,Array destinationArray, int destinationIndex,int length)
//从指定的源索引开始,复制Array中的一系列元素,将它们粘贴到另一Array中(从指定的目标索引开始)。长度和索引指定为64位整数
public static void Copy(Array sourceArray, long sourceIndex,Array destinationArray, long destinationIndex,long length)
例: Array myIntArray=Array.CreateInstance( typeof(System.Int32), 5 );
for ( int i = myIntArray.GetLowerBound(0); i <= myIntArray.GetUpperBound(0); i++ )
{myIntArray.SetValue( i+1, i );}
Array myObjArray = Array.CreateInstance( typeof(System.Object), 5 );
for ( int i = myObjArray.GetLowerBound(0); i <= myObjArray.GetUpperBound(0); i++ )
{myObjArray.SetValue( i+26, i );}
// Copies the first element from the Int32 array to the Object array.
Array.Copy( myIntArray, myIntArray.GetLowerBound(0), myObjArray, myObjArray.GetLowerBound(0), 1 );
// Copies the last two elements from the Object array to the Int32 array.
Array.Copy( myObjArray, myObjArray.GetUpperBound(0) - 1, myIntArray, myIntArray.GetUpperBound(0) - 1, 2 );
区别:
Clone()返回值是Object,Copy返回值为void
Clone()是非静态方法,Copy为静态方法。
Clone()会创建一个新数组,Copy方法必须传递阶数相同且有足够元素的已有数组。
命名空间:System
程序集:mscorlib
语法:
public Object Clone()
Array的浅表副本仅复制Array的元素,无论他们是引用类型还是值类型,但是不负责这些引用所引用的对象。
新Array中的引用与原始Array的引用指向相同的对象。
例:
int[] intArray1 = {1, 2};
int [] intArray2 = (int [])intArray1.Clone();
这里需要说明的是,需要使用强制类型转换,原因在于Clone()返回的类型为Object
2 Array.Copy方法
命名空间:System
程序集:mscorlib
Copy有几个重载函数:
//从第一个元素开始复制Array中的一系列元素,将它们粘贴到另一Array中(从第一个元素开始)。长度为32位整数
public static void Copy(Array sourceArray, Array destinationArray, int length)
//从第一个元素开始复制Array中的一系列元素,将它们粘贴到另一Array中(从第一个元素开始)。长度为64位整数
public static void Copy(Array sourceArray, Array destinationArray, long length)
//从指定的源索引开始,复制Array中的一系列元素,将它们粘贴到另一Array中(从指定的目标索引开始)。长度和索引指定为32位整数
public static void Copy(Array sourceArray, int sourceIndex,Array destinationArray, int destinationIndex,int length)
//从指定的源索引开始,复制Array中的一系列元素,将它们粘贴到另一Array中(从指定的目标索引开始)。长度和索引指定为64位整数
public static void Copy(Array sourceArray, long sourceIndex,Array destinationArray, long destinationIndex,long length)
例: Array myIntArray=Array.CreateInstance( typeof(System.Int32), 5 );
for ( int i = myIntArray.GetLowerBound(0); i <= myIntArray.GetUpperBound(0); i++ )
{myIntArray.SetValue( i+1, i );}
Array myObjArray = Array.CreateInstance( typeof(System.Object), 5 );
for ( int i = myObjArray.GetLowerBound(0); i <= myObjArray.GetUpperBound(0); i++ )
{myObjArray.SetValue( i+26, i );}
// Copies the first element from the Int32 array to the Object array.
Array.Copy( myIntArray, myIntArray.GetLowerBound(0), myObjArray, myObjArray.GetLowerBound(0), 1 );
// Copies the last two elements from the Object array to the Int32 array.
Array.Copy( myObjArray, myObjArray.GetUpperBound(0) - 1, myIntArray, myIntArray.GetUpperBound(0) - 1, 2 );
区别:
Clone()返回值是Object,Copy返回值为void
Clone()是非静态方法,Copy为静态方法。
Clone()会创建一个新数组,Copy方法必须传递阶数相同且有足够元素的已有数组。
相关文章推荐
- C#学习视频分享与开发技术QQ交流群
- C#获取当前程序运行路径的方法集合
- .Net学习笔记----2015-07-22(C#基础复习09,虚方法、抽象方法、接口复习)
- C#实现winform用子窗体刷新父窗体及子窗体改变父窗体控件值的方法
- C#获取关键字附近文字算法实例
- C# Dictionary用法总结
- C#使用iTextSharp设置PDF所有页面背景图功能实例
- C#反射机制 (转载)
- C#下载局域网共享文件夹中的文件
- DevComponents.DotNetBar2显示控件的方法
- DevComponents.DotNetBar2显示控件的方法
- C#远程发送和接收数据流生成图片的方法
- C# vs 2015 to automate ONE
- C#中如何简单的设置session的过期时间
- C#实现汉字转拼音或转拼音首字母的方法
- C#验证码识别类完整实例
- 关于Debug和Release的区别 (VS C#)
- c#导出Excel操作
- C#语言中条件与&&与条件或||的区别
- C#获取CPU编号的方法