C# 按值复制数组

2024-03-06

我有一个类型数组MyType[] types;我想制作这个数组的独立副本。我试过这个

MyType[] types2 = new MyType[types.Length] ;

types2 = types ;

但这会创建对第一个的引用。然后我尝试了

Array.Copy( types , types2 , types.Length ) ;

但我有同样的问题:更改第一个数组中的值也会更改副本中的值。

如何制作 Array、IList 或 IEnumerable 的完全独立或深层副本?


根据第一篇文章,他所需要的只是“数组的独立副本”。更改为shallowCopy数组本身不会出现在types数组(意思是元素分配,这确实是他上面显示的,尽管说“深复制”)。如果这适合您的需求,它将具有最佳性能。

MyType[] shallowCopy = (MyType[])types.Clone();

他还提到了“深层复制”,这对于不是基元的递归值类型聚合的可变类型来说是不同的。如果MyType实施ICloneable,这对于深层复制非常有用:

MyType[] deepCopy = (MyType[])Array.ConvertAll(element => (MyType)element.Clone());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 按值复制数组 的相关文章

随机推荐

  • 使用 Android.Xamarin 查找纬度和经度

    我正在尝试在 Android Xamarin 中开发商店定位器应用程序 我的第一步是找到我所在位置的纬度和经度 但我的模拟器 设备屏幕没有显示任何内容 我有我的uses permissions set to
  • JQuery UI 日期选择器的下一个和上一个按钮只有一个祖先。 $(e.target).parents() 只返回一个元素

    我还没有足够的代表来发布我自己的答案 但在我浪费更多人的时间之前 好吧 我现在明白为什么我没有得到所有预期的祖先 JQuery datepicker删除父节点 datepicker head 单击 在那之后我的事件是在按钮上触发的 已经被删
  • python 查找列表中最后一次出现的项目

    我希望找到序列 s 中项目 x 的最后一次出现 或者如果没有并且第一个项目的位置等于 0 则返回 None 这就是我目前所拥有的 def PositionLast x s count len s 1 for i in s count 1 i
  • Express 版本缺少“调试”->“异常”菜单

    我用 VS 2013快报 调试时 我需要在出现异常时自动停止 尝试遵循这个 http msdn microsoft com en us library d14azbfh aspx AddExceptionsCommand http msdn
  • 如何合并两个连续的行并形成一个新列?

    我有一个 DF 从会计软件收集 如下所示 Serial Date Particulars Price 1 0308 Andrew 100 2 NaN Gloves NaN 3 0408 Johnson 50 4 NaN Wicket NaN
  • 如何在 Windows 10 UWP 中根据 HTML 内容调整 Webview 高度?

    我目前正在开发 Windows 10 UWP 应用程序 并面临 WebView 的问题 即当我的 HTML 内容较少时 我的 JavaScript 高度会增加 我的代码如下 WebView webView new WebView IsHit
  • Django 模型中的密码字段

    我正在尝试创建一个可以存储其他应用程序的用户名和密码的模型 如何在 Django 中设置密码字段 使其在管理中不是纯文本 提前致谢 作为 mlissner建议 https stackoverflow com questions 371510
  • 如何使用 angular2 应用程序和 net core 应用程序实现 X-XSRF-TOKEN?

    我在 Startup cs 中设置了我的网络核心应用程序和防伪 middlweare services AddAntiforgery options gt options HeaderName X XSRF TOKEN 在Configure
  • onClick 不适用于 IE 11 中的单击

    当用户单击视频上的任意位置时 我尝试播放 暂停视频 问题是 它在 IE 11 中双击运行 而对于所有其他浏览器 它在单击左键时运行良好 以下是我的代码 var obj
  • 将键值数据库与 Spark 集成

    我无法理解 Spark 如何与存储交互 我想创建一个从 RocksDB 数据库 或任何其他键值存储 获取数据的 Spark 集群 然而 此时此刻 我能做的最好的事情就是将整个数据集从数据库获取到每个集群节点的内存中 例如映射到映射中 并从该
  • 优化填充“?”的正则表达式

    速记键盘上有以下按键STKPWHRAO EUFRPBLGTSDZ 用户按下多个键 然后抬起时一次性注册所有键 这类似于在钢琴上弹奏和弦 示例笔画是KAT TPHOEUGT 我有一个正则表达式来测试有效的速记和弦 可以是任意数量的这些键 但它
  • 防止选择日期范围内包含无效日期的日期范围

    我正在使用日期范围选择器来选择日期范围 一旦范围之间存在无效日期 就不应该将它们转移到另一个日期 类似的东西这个问题 https stackoverflow com a 46059134 8093805 但是它使用 Bootstrap da
  • 格式化 JavaScript 标签的正确方法是什么?

    自 1996 年以来一直在开发网络应用程序 我经常找到做旧事情的新方法 所以我想知道在新开发中使用正确的 JavaScript 标签是什么 目前我对 XHTML 使用类似的东西 我在某处读到这可能会导致旧版浏览器出现问题 但要使用以下内容
  • java.net.SocketTimeoutException:超时

    With OkHttp图书馆 应用程序面临以下SocketTimeoutException问题 如果请求大小较小 则可以正常工作 小于 1MB 我在 10 秒内收到此异常 甚至我的套接字超时 readTimeout 价值要高得多 请求始终失
  • React Native 导航 5 身份验证流程

    我似乎无法在我的 App js 文件上进行三元身份验证 我正在检查是否有密钥 然后根据该密钥的存在显示 AuthStack 或 MainStack 当我从 AuthStack 转到 MainStack 将密钥设置为 AsyncStorage
  • Toolbar.inflateMenu 似乎什么也没做

    我目前正在研究新的 AppCompat 库 将材料设计带入旧设备 将工具栏设置为操作栏对我来说效果很好 但工具栏似乎在调用时没有执行任何操作inflateMenu int resId 从文档中 我认为这是替换getMenuInflater
  • c#: google Drive : google apis.services 您是否缺少程序集或引用

    我正在尝试使用快速入门示例将 google drive 用于 net 我已经通过 nuget 安装了 dll 但收到以下错误 指出我缺少 google apis service 的引用或程序集 任何帮助 将不胜感激 using System
  • 有没有一种简单的方法可以从流星部署的应用程序导出数据?

    有没有一种简单的方法可以从流星部署的应用程序导出数据 因此 例如 如果我部署了一个名为 test meteor com 的应用程序 我如何轻松下载该应用程序收集的数据 以便我可以使用已部署应用程序中的数据在本地运行它 要获取您在meteor
  • 查询缓存效率

    我正在使用 MySQLTuner pl 来优化我的网站 尽管我不完全确定如何解决其中一些问题 并且想知道是否有人可以帮助我 我运行 16GB RAM MySQL 设置如下 key buffer 1024M max allowed packe
  • C# 按值复制数组

    我有一个类型数组MyType types 我想制作这个数组的独立副本 我试过这个 MyType types2 new MyType types Length types2 types 但这会创建对第一个的引用 然后我尝试了 Array Co