2

他の C# プログラマーと同様に、オブジェクトのコピーをどのように表現するのが最善かという問題に直面しています。具体的には、すべてのオブジェクトがコピー可能でなければならないクラス階層があります。 コピー コンストラクター ( C# では提供されません) を使用するか、メソッドを使用するかについては、既に説明しました。もう 1 つのオプションは、オブジェクトを取得してコピーを作成するメソッドを使用することです。すべてのオプションには長所と短所がありますが、それらすべてに共通する 1 つの問題は、入力の問題です。Clone()

可能な限り、元のオブジェクトと同じ型のオブジェクトを常に生成するクラス階層内のすべてのオブジェクトにコピー操作が存在することを述べたいと思います-これに対する違反がコンパイル時に報告されるように時間。

これら 3 つのオプションのいずれも、ジェネリックを使用してもこれを行うことはできません。どうやら、C# ではまったく実行できません。Javaや私が知っている他の言語もそうではありません。

なぜだめですか?型システムのそのような機能を実装するのは難しすぎますか? それは矛盾を引き起こしますか?正確に型付けされたコピー操作が必要な場合は、特殊なケースと見なされますか? 私が見逃したこれを達成する他の方法はありますか?

PS: この質問は、浅いコピーと深いコピーの違い、コピー方法、またはコピー行うかどうかに関するものではないことに注意してください。

4

4 に答える 4