【发布时间】:2012-05-17 23:03:29
【问题描述】:
首先让我说我知道它是一个受保护的方法,我不应该调用它,但它不应该工作,因为 MemberwiseClone 是在 Object 类和 String 继承自它?
所以这是克隆方法(我删除了空引用处理以专注于重要的事情):
public static T ShallowClone<T>(T obj)
{
MethodInfo memberwiseClone;
memberwiseClone = obj.GetType().GetMethod("MemberwiseClone", BindingFlags.Instance | BindingFlags.NonPublic);
return (T)memberwiseClone.Invoke(obj, null);
}
如果我这样称呼它:
string str = ShallowClone("My string");
生成的字符串 (str) 将是:
"M\0\0\0\0\0\0\0\0"
提前致谢!
【问题讨论】:
-
猜测:底层原生是一个指针,
MemberwiseClone取值(即第一个字符)和长度而不复制其余部分。 -
克隆字符串有什么意义?
-
我正在从一个集合中克隆元素,偶然发现了一个字符串...
标签: c# reflection shallow-clone