当已知对象是装箱 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(使用前将#替换为@)