まず、これが保護されたメソッドであり、呼び出す必要がないことを知っていますが、MemberwiseCloneがObjectクラスで定義され、Stringがそれを継承しているため、機能しないはずです。
したがって、これはクローン作成方法です(重要なことに焦点を当てるために、null参照処理を削除しました)。
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"
前もって感謝します!