私の質問は、C# でのオブジェクトの使用に関するものです。何が起こっているのか理解できたと思いますが、その理由を理解したいのです。ここでは説明しませんが、現在のデータ (現在の状態) を使用してオブジェクトの一時的なコピーを作成したいと考えています。そこで、新しいオブジェクトを作成し、それを元のオブジェクトに割り当て、元のオブジェクトを変更できると考えました。その時点で、2 つのオブジェクトが異なる状態になります。しかし、何が起こるかというと、コピーされたオブジェクトは最初のオブジェクトとまったく同じように見えてしまいます。説明するコードを次に示します。
Order o1 = new Order();
o1.property1 = "test 1";
Order o2 = new Order();
o2 = o1;
o1.property1 = "test 2";
しかし、このコードの最後では、o1 と o2 の両方で、property1 が「test 2」に設定されています。すべてのオブジェクトは単なるポインターであることを認識していると思います。そのため、1 つを変更すると別のオブジェクトも変更されますが、これがなぜなのか、なぜ便利なのか理解できません。ここで欠けている基本的なものはありますか?また、私がやりたいことを達成するための最良の方法は何ですか? つまり、オブジェクトの状態を保存し、変更を加えてから、必要に応じて元に戻します。うまくいけば、これは理にかなっています。