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# 按值复制数组 的相关文章

  • 如何按值删除数组中的多个项目?

    我正在尝试做一个removeAll 函数 它将删除具有该特定值 而不是索引 的数组的所有元素 当我们对循环进行任何更改时 棘手的部分就出现了 索引往往会移动 使其很难像我们想要的那样工作 并且每次更改时都重新启动循环 这在大数组上效率非常低
  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • 为什么禁止在 constexpr 函数中使用 goto?

    C 14 对你能做什么和不能做什么有规则constexpr功能 其中一些 没有asm 没有静态变量 看起来相当合理 但标准也不允许goto in constexpr功能 即使它允许其他控制流机制 这种区别背后的原因是什么 我以为我们已经过去
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • HttpClient 像浏览器一样请求

    当我通过 HttpClient 类调用网站 www livescore com 时 我总是收到错误 500 可能服务器阻止了来自 HttpClient 的请求 1 还有其他方法可以从网页获取html吗 2 如何设置标题来获取html内容 当
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • 使用向量的 merge_sort 在少于 9 个输入的情况下效果很好

    不知何故 我使用向量实现了合并排序 问题是 它可以在少于 9 个输入的情况下正常工作 但在有 9 个或更多输入的情况下 它会执行一些我不明白的操作 如下所示 Input 5 4 3 2 1 6 5 4 3 2 1 9 8 7 6 5 4 3
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • 与 array_intersect 相反?

    是否有一个内置函数可以获取数组 1 中不存在于数组 2 中的所有成员 我知道如何以编程方式执行此操作 只是想知道是否有一个内置函数可以执行相同的操作 所以请不要提供代码示例 这听起来像是一份工作array diff http www php
  • 用 C 实现 Unix shell:检查文件是否可执行

    我正在努力用 C 语言实现 Unix shell 目前正在处理相对路径的问题 特别是在输入命令时 现在 我每次都必须输入可执行文件的完整路径 而我宁愿简单地输入 ls 或 cat 我已经设法获取 PATH 环境变量 我的想法是在 字符处拆分
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • 什么是 C 语言的高效工作流程? - Makefile + bash脚本

    我正在开发我的第一个项目 该项目将跨越多个 C 文件 对于我的前几个练习程序 我只是在中编写了我的代码main c并使用编译gcc main c o main 当我学习时 这对我有用 现在 我正在独自开展一个更大的项目 我想继续自己进行编译
  • 如何构建印度尼西亚电话号码正则表达式

    这些是一些印度尼西亚的电话号码 08xxxxxxxxx 至少包含 11 个字符长度 08xxxxxxxxxxx 始终以 08 开头 我发现这个很有用 Regex regex new Regex 08 0 9 0 9 0 9 0 9 0 9
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反
  • 如何将字符串“07:35”(HH:MM) 转换为 TimeSpan

    我想知道是否有办法将 24 小时时间格式的字符串转换为 TimeSpan 现在我有一种 旧时尚风格 string stringTime 07 35 string values stringTime Split TimeSpan ts new
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器

随机推荐

  • 使用 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