是否可以克隆 ValueType?

2023-12-31

当已知对象是装箱 ValueType 时,是否可以克隆对象,而无需编写特定于类型的克隆代码?

一些代码供参考

List<ValueType> values = new List<ValueType> {3, DateTime.Now, 23.4M};
DuplicateLastItem(values);

我遇到的具体问题是基于值堆栈的虚拟指令机。 (而且我懒得写 typeof(int) typeof(DateTime)....)

update我想我让自己(和其他一些人)感到困惑。我的工作解决方案是;

List<ValueType> values = new List<ValueType> { 3, DateTime.Now, 23.4M }; 

// Clone
values.Add(values[values.Count() - 1]);

// Overwrite original
values[2] = 'p';

foreach (ValueType val in values)
   Console.WriteLine(val.ToString());

您可以使用 hack 使用Convert.ChangeType:

object x = 1;
var type = x.GetType();
var clone = Convert.ChangeType(x, type);

// Make sure it works
Assert.AreNotSame(x, clone);

结果是新对象中装箱值的副本。

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

是否可以克隆 ValueType? 的相关文章

  • 为什么在连接两个字符串时 Python 比 C 更快?

    目前我想比较 Python 和 C 用来处理字符串的速度 我认为 C 应该比 Python 提供更好的性能 然而 我得到了完全相反的结果 这是 C 程序 include
  • 使用 C# 登录《我的世界》

    我正在尝试为自己和一些朋友创建一个简单的自定义 Minecraft 启动器 我不需要启动 Minecraft 的代码 只需要登录的实际代码行 例如 据我所知 您过去可以使用 string netResponse httpGET https
  • 如何捕获未发送到 stdout 的命令行文本?

    我在项目中使用 LAME 命令行 mp3 编码器 我希望能够看到某人正在使用什么版本 如果我只执行 LAME exe 而不带参数 我会得到 例如 C LAME gt LAME exe LAME 32 bits version 3 98 2
  • ComboBox DataBinding 导致 ArgumentException

    我的几个类对象 class Person public string Name get set public string Sex get set public int Age get set public override string
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • JNI 将 Char* 2D 数组传递给 JAVA 代码

    我想从 C 代码通过 JNI 层传递以下指针数组 char result MAXTEST MAXRESPONSE 12 12 8 3 29 70 5 2 42 42 在java代码中我写了以下声明 public static native
  • 使用可变参数包类型扩展的 C++ 函数调用者包装器

    我绑定了一些 API 并且绑定了一些函数签名 如下所示 static bool WrapperFunction JSContext cx unsigned argc JS Value vp 我尝试将对象和函数包装在 SpiderMonkey
  • 对 std::vector 进行排序但忽略某个数字

    我有一个std vector
  • File.AppendText 尝试写入错误的位置

    我有一个 C 控制台应用程序 它作为 Windows 任务计划程序中的计划任务运行 此控制台应用程序写入日志文件 该日志文件在调试模式下运行时会创建并写入应用程序文件夹本身内的文件 但是 当它在任务计划程序中运行时 它会抛出一个错误 指出访
  • 使用 LINQ to SQL 时避免连接超时的最佳实践

    我需要知道在 net 应用程序中使用 LINQ to SQL 时避免连接超时的最佳实践 特别是在返回时IQueryable
  • 在Linux中,找不到框架“.NETFramework,Version=v4.5”的参考程序集

    我已经设置了 Visual studio 来在我的 Ubuntu 机器上编译 C 代码 我将工作区 我的代码加载到 VS 我可以看到以下错误 The reference assemblies for framework NETFramewo
  • 识别 Visual Studio 中的重载运算符 (c++)

    有没有办法使用 Visual Studio 快速直观地识别 C 中的重载运算符 在我看来 C 中的一大问题是不知道您正在使用的运算符是否已重载 Visual Studio 或某些第三方工具中是否有某些功能可以自动突出显示重载运算符或对重载运
  • 为什么我的单选按钮不起作用?

    我正在 Visual C 2005 中开发 MFC 对话框应用程序 我的单选按钮是 m Small m Medium 和 m Large 它们都没有在我的 m Summary 编辑框中显示应有的内容 可能出什么问题了 这是我的代码 Pizz
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • 等待 IAsyncResult 函数直至完成

    我需要创建等待 IAsyncResult 方法完成的机制 我怎样才能做到这一点 IAsyncResult result contactGroupServices BeginDeleteContact contactToRemove Uri
  • 打印大型 WPF 用户控件

    我有一个巨大的数据 我想使用 WPF 打印 我发现WPF提供了一个PrintDialog PrintVisual用于打印派生的任何 WPF 控件的方法Visual class PrintVisual只会打印一页 因此我需要缩放控件以适合页面
  • C++ new * char 不为空

    我有一个问题 我在 ASIO 中开发服务器 数据包采用尖头字符 当我创建新字符时 例如char buffer new char 128 我必须手动将其清理为空 By for int i 0 i lt 128 i buffer i 0x00
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • Objective-C / C 给出枚举默认值

    我在某处读到过关于给枚举默认值的内容 如下所示 typedef enum MarketNavigationTypeNone 0 MarketNavigationTypeHeirachy 1 MarketNavigationTypeMarke
  • 不区分大小写的字符串比较 C++ [重复]

    这个问题在这里已经有答案了 我知道有一些方法可以进行忽略大小写的比较 其中涉及遍历字符串或一个good one https stackoverflow com questions 11635 case insensitive string

随机推荐

  • .Net 添加索引到数据表(数据集)

    有没有办法在 Net 中向数据表添加索引 我有一个包含大约 1 100 行的数据表 并且 datatable select 语句对于内存中操作来说似乎有点慢 table PrimaryKey new DataColumn table Col
  • 运行 spork 时出现错误:地址已在使用中

    我假设这是因为进程没有正确关闭 所以仍在运行 但使用top或ps我找不到它 有没有办法找到它的运行位置 或者让它强制重新打开端口 try sudo netstat lpn查看正在侦听哪些端口以及正在侦听哪些进程
  • 查找 LineString 与 turfjs 中的多边形边框相交的坐标

    Turfjs 有没有办法确定 LineString 与多边形边界相交的坐标 有多种方法可以确定一个点是否在多边形内 也有多种方法可以确定一个点是否在一条直线上等等 但我似乎无法找到一种方法来询问 这条线在什么点与这个多边形的边界相交 我可以
  • 如何访问字典中的第一个和最后一个元素?

    在发帖之前 我已经经历过在Python中访问字典中的任意元素 https stackoverflow com questions 3097866 python access to first element in dictionary 但我
  • 为什么我不能使用 Set:union() 而不是 Set.union?

    我正在学习 Lua 我宁愿使用冒号 的方法 不幸的是 它并不是在所有地方都有效 看我的代码 Set local mt function Set new m local set setmetatable set mt for a b in p
  • 如何使用 RabbitMQ-JMS 恢复消费者,或指定自定义异常处理程序?

    我正在尝试使用 RabbitMQ JMS 客户端 并有意创建了一个长 onMessage 侦听器来查看客户端将如何恢复 Context context new InitialContext rabbitMQ RMQConnectionFac
  • 如果构造函数中引发异常会发生什么[重复]

    这个问题在这里已经有答案了 可能的重复 如果派生类析构函数抛出异常 基类析构函数会发生什么情况 https stackoverflow com questions 4508533 what happens to base class des
  • 创建注册表项(和子项)?

    我正在尝试创建一个注册表项和子项 以便为计算机上的所有用户启用 IE 11 企业模式 这就是我当前用于 VBScript 的内容 但它失败得很厉害 不添加密钥 我需要一些帮助来纠正这个问题 Const HKEY LOCAL MACHINE
  • 如何删除 Eclipse 项目相关文件而不从 Eclipse 中删除源

    每当我们想要使用现有源位置创建 Eclipse 项目时 我们都会选择现有源位置 根 作为项目位置 Eclipse 将在该源的根目录中创建所有项目特定文件 现在 由于某种原因 如果我们想使用不同的设置重新创建项目 我们应该如何告诉 Eclip
  • 启用 Lambda@Edge 后调试 CloudFront 的问题

    下列的本文 https aws amazon com blogs apn using amazon cloudfront with multi region amazon s3 origins 我正在尝试从 AWS 内的多个区域 同一域下
  • JAVA 面向方面编程 - 运行时方面编织和类加载时方面编织

    我看到一篇关于 AOP 的文章 其中提到切面编织可以在编译时 类加载时和运行时发生 在java中 我可以想象 甚至可以理解 方面编织在编译时实际上是如何发生的 代理类是在类编译期间生成的 在项目上启用了方面 生成的字节码将具有代理代码 但我
  • .Net Twitter OAuth 如何执行成功的 GET 请求

    按照本教程 我能够成功向 Twitter API 发布帖子并更新我的状态 但是我在处理成功的 GET 请求时遇到问题 我正在尝试修改 Post 请求来完成此操作 但在我的网络异常上不断收到 无效协议 错误 以下是将发布状态更新的工作代码 h
  • 原则 2. orm:schema-tool:update 。设置开始ID

    当我使用 bin doctrine orm fixtures load使用示例数据填充表首先迁移设置自动增量表 ID 如 1 2 3 4 5 等 第二次之后orm fixtures load迁移命令它会清除所有数据并设置 id 如 5 6
  • 如何在 Vim 中设置工作/当前目录?

    因此 当我想使用 e 命令创建新文件时 我不想指定整个路径 而只想指定新文件名 能做到吗 正如已经建议的 您可以使用 autochdir 它将更改为您打开的文件的目录 另一个选项是 cd mydirectory 这将更改目录 这可以是绝对路
  • ruby - 覆盖方法然后恢复

    我正在尝试找到一种方法 可以覆盖方法 执行某些操作 然后在不留下任何工件的情况下进行恢复 我已经使用 mocha 实现了这个 但显然这不会在生产应用程序中运行 请注意 新方法有参数 而旧方法没有 示例如下 require rubygems
  • CSS 宽度和高度属性的最大像素值是多少?

    最大有效值是多少pxCSS 的值width and height属性接受吗 我目前正在构建一个网络应用程序 它创建一个非常大的可缩放容器元素 我想知道实际的限制是什么 在元素上使用某些浏览器附带的 CSS 检查器10000000000px
  • 从 javascript 运行 bat 文件

    我正在尝试使用 javascript 运行 bat 文件 我尝试过使用 powershell 但它似乎无法正常工作 这是我尝试过的代码 var oShell WScript CreateObject WScript Shell oShell
  • 将浮动栏添加到滚动视图,就像 Facebook iOS 应用程序的时间线中一样

    我一直在尝试向我的测试项目添加不同的交互 但在添加 Facebook 的帖子状态栏之类的东西时遇到了麻烦 该状态栏位于时间线滚动视图上 并在向下滚动时随滚动视图一起滚动视图 但当您向上滚动时仍停留在导航栏下方 我一直在创建一个单独的 UIV
  • 如何在 docker 上运行电子应用程序

    我创建了一个托管电子应用程序的存储库的分支 该应用程序是一个聊天客户端 https github com Serkan devel BetterDiscordApp docker https github com Serkan devel
  • 是否可以克隆 ValueType?

    当已知对象是装箱 ValueType 时 是否可以克隆对象 而无需编写特定于类型的克隆代码 一些代码供参考 List