浅拷贝 我想定义一个二维动态数组,用来存放另一个二维动态数组的内容,用什么方法?是浅拷贝吗?具体要如何用? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 浅拷贝不行吧?.clone()或者序列化后深拷贝 .NET Framework 类库 Array.Clone 方法 创建 Array 的浅表副本。 命名空间:System程序集:mscorlib(在 mscorlib.dll 中)语法C# public Object Clone () 返回值Array 的浅表副本。 备注Array 的浅表副本仅复制 Array 的元素(无论它们是引用类型还是值类型),但不复制这些引用所引用的对象。新 Array 中的引用与原始 Array 中的引用指向相同的对象。相比之下,Array 的深层副本会复制元素和元素直接或间接引用的一切。复本与原始 Array 的 Type 相同。此方法的运算复杂度为 O(n),其中 n 是 Length。=========================================================================.NET Framework 类库 Array.Copy 方法 (Array, Array, Int32) 从第一个元素开始复制 Array 中的一系列元素,将它们粘贴到另一 Array 中(从第一个元素开始)。长度指定为 32 位整数。 命名空间:System程序集:mscorlib(在 mscorlib.dll 中)语法Array.Copy(sourceArray, destinationArray, length) C# public static void Copy ( Array sourceArray, Array destinationArray, int length) 参数sourceArrayArray,它包含要复制的数据。destinationArrayArray,它接收数据。length一个 32 位整数,它表示要复制的元素数目。备注sourceArray 和 destinationArray 参数必须具有相同的维数。当在多维数组之间复制时,数组像长一维数组那样操作,在此行(或列)在概念上首尾相连。例如,如果一个数组有三行(或列),每一行(或列)带有四个元素,若要从数组的开始复制六个元素,则会复制第一行(或列)的所有四个元素和第二行(或列)的头两个元素。如果 sourceArray 和 destinationArray 重叠,那么在重写 destinationArray 之前,此方法的行为好像 sourceArray 的原始值保留在临时位置那样。此方法等效于标准 C/C++ 函数 memmove,而不是 memcpy。数组可以是引用类型的数组或值类型的数组。按需要执行类型向下转换。在从引用类型的数组复制到值类型的数组时,每一个元素都要取消装箱,然后再复制。在从值类型的数组复制到引用类型的数组时,每一个元素都要装箱,然后再复制。在从引用类型或值类型的数组复制到 Object 数组时,会创建 Object 以保存每一个值或引用,然后再复制。在从 Object 数组复制到引用类型或值类型的数组,且不可能进行分配时,将引发 InvalidCastException。如果 sourceArray 和 destinationArray 都是引用类型的数组或都是 Object 类型的数组,则执行浅表复制。Array 的浅表副本是包含对与原始 Array 相同的元素的引用的新 Array。不复制元素本身和元素引用的任何内容。相比之下,Array 的深层副本会复制元素和元素直接或间接引用的一切。如果数组是不兼容的类型,则会引发 ArrayTypeMismatchException。类型兼容性的定义如下: 类型与其本身兼容。值类型与 Object 兼容,也与该值类型实现的接口类型兼容。只有当值类型直接实现一个接口时,该值类型才算与该接口连接。断开连接的类型不兼容。如果从源类型复制到目标类型是扩大转换,则两个内部(预定义)值类型兼容。扩大转换从不会丢失信息,而收缩转换可能会丢失信息。例如,将 32 位有符号的整数转换为 64 位有符号的整数是扩大转换,而将 64 位有符号的整数转换为 32 位有符号的整数是收缩转换。有关转换的更多信息,请参见 Convert。非内部(用户定义)值类型只与其本身兼容。如果 sourceArray 中的每个元素都要求向下转换(例如,从基类转换到派生类或从接口转换到对象),且一个或多个元素无法强制转换为 destinationArray 中的对应类型,则会引发 InvalidCastException。如果此方法在复制时引发异常,则 destinationArray 的状态未定义。此方法的运算复杂度为 O(n),其中 n 是 length。 Array.copy操作会有装箱和拆箱。 vs2008在水晶报表中如何自动补充空行,意思就是固定详细信息的总高度 treeView问题,高手指点!(C/S) C#中式怎么实现日期自动加一个月的代码 请问在rtf文件中如何将指定的字符串替换为中文 数据绑定的问题 带中文网址的网页内容该如何读? 关于数据转换得一个问题。。高手帮忙啊。。 怎么样做一个象QQ一样的在任务栏中显示图标当有信息时候闪动? 关于登录对话框和主窗口显示问题。 c#做一个简单的计时器(00:00)新手请进,大佬绕路! 是基督徒的弟兄姊妹请进 可有人做过这种应用?一个WEBSERVICE里面调用另一个WEBSERVICE
浅拷贝不行吧?
.clone()
或者序列化后深拷贝
Array.Clone 方法 创建 Array 的浅表副本。 命名空间:System
程序集:mscorlib(在 mscorlib.dll 中)语法
C#
public Object Clone ()
返回值
Array 的浅表副本。
备注
Array 的浅表副本仅复制 Array 的元素(无论它们是引用类型还是值类型),但不复制这些引用所引用的对象。新 Array 中的引用与原始 Array 中的引用指向相同的对象。相比之下,Array 的深层副本会复制元素和元素直接或间接引用的一切。复本与原始 Array 的 Type 相同。此方法的运算复杂度为 O(n),其中 n 是 Length。
=========================================================================
.NET Framework 类库
Array.Copy 方法 (Array, Array, Int32) 从第一个元素开始复制 Array 中的一系列元素,将它们粘贴到另一 Array 中(从第一个元素开始)。长度指定为 32 位整数。 命名空间:System
程序集:mscorlib(在 mscorlib.dll 中)语法
Array.Copy(sourceArray, destinationArray, length)
C#
public static void Copy (
Array sourceArray,
Array destinationArray,
int length
)
参数
sourceArray
Array,它包含要复制的数据。destinationArray
Array,它接收数据。length
一个 32 位整数,它表示要复制的元素数目。
备注
sourceArray 和 destinationArray 参数必须具有相同的维数。当在多维数组之间复制时,数组像长一维数组那样操作,在此行(或列)在概念上首尾相连。例如,如果一个数组有三行(或列),每一行(或列)带有四个元素,若要从数组的开始复制六个元素,则会复制第一行(或列)的所有四个元素和第二行(或列)的头两个元素。如果 sourceArray 和 destinationArray 重叠,那么在重写 destinationArray 之前,此方法的行为好像 sourceArray 的原始值保留在临时位置那样。此方法等效于标准 C/C++ 函数 memmove,而不是 memcpy。数组可以是引用类型的数组或值类型的数组。按需要执行类型向下转换。在从引用类型的数组复制到值类型的数组时,每一个元素都要取消装箱,然后再复制。在从值类型的数组复制到引用类型的数组时,每一个元素都要装箱,然后再复制。在从引用类型或值类型的数组复制到 Object 数组时,会创建 Object 以保存每一个值或引用,然后再复制。在从 Object 数组复制到引用类型或值类型的数组,且不可能进行分配时,将引发 InvalidCastException。如果 sourceArray 和 destinationArray 都是引用类型的数组或都是 Object 类型的数组,则执行浅表复制。Array 的浅表副本是包含对与原始 Array 相同的元素的引用的新 Array。不复制元素本身和元素引用的任何内容。相比之下,Array 的深层副本会复制元素和元素直接或间接引用的一切。如果数组是不兼容的类型,则会引发 ArrayTypeMismatchException。类型兼容性的定义如下: 类型与其本身兼容。值类型与 Object 兼容,也与该值类型实现的接口类型兼容。只有当值类型直接实现一个接口时,该值类型才算与该接口连接。断开连接的类型不兼容。如果从源类型复制到目标类型是扩大转换,则两个内部(预定义)值类型兼容。扩大转换从不会丢失信息,而收缩转换可能会丢失信息。例如,将 32 位有符号的整数转换为 64 位有符号的整数是扩大转换,而将 64 位有符号的整数转换为 32 位有符号的整数是收缩转换。有关转换的更多信息,请参见 Convert。非内部(用户定义)值类型只与其本身兼容。如果 sourceArray 中的每个元素都要求向下转换(例如,从基类转换到派生类或从接口转换到对象),且一个或多个元素无法强制转换为 destinationArray 中的对应类型,则会引发 InvalidCastException。如果此方法在复制时引发异常,则 destinationArray 的状态未定义。此方法的运算复杂度为 O(n),其中 n 是 length。