質問: String.Copy(Name); return other; } } ``` しかし、実際にはMemberwiseClone()を用いて生成したクローンの stringフィールドを変更しても元のインスタンスには影響を与えません。 また、この例にあるstring.CopyはObsoleteとなっています。 仮に、string型フィールドのみ、または値型とstring型フィールドのみの クラスであればMemberwiseClone()を用いてクローンを生成するだけで ディープコピーと同じ状態を得られると考えて問題ないでしょうか。
回答: `String.Copy`に > > 特に、.NET Core 3.0 では文字列インターンが変更されているため、 Copy メソッドは新しい文字列を作成せず、単に既存のインターン文字列への参照を返す場合があります。 > > > とあるように、ディープコピーを実現できない可能性があります。 オブジェクトには様々なコピー要求があり`Object.MemberwiseClone`ではカバーしきれないため利用はあまり推奨されていません。ご自身の望むコピー処理を直接記述されることをお勧めします。例えば、`String`は不変なためディープコピーする意義がないかもしれません。