gpt4 book ai didi

c# - 是否可以克隆 ValueType?

转载 作者:可可西里 更新时间:2023-11-01 09:01:39 28 4
gpt4 key购买 nike

是否可以在不编写特定于类型的克隆代码的情况下克隆一个已知为盒装 ValueType 的对象?

一些引用代码

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

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

更新 我想我把自己(和其他一些人)搞糊涂了。我的工作解决方案是;

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());

最佳答案

您可以使用 Convert.ChangeType 进行破解:

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

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

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

关于c# - 是否可以克隆 ValueType?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1803831/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com