ToList() が呼び出されるとき、新しいリストは作成されますか?
このシナリオでは、というクラスを使用しています。 SimpleInt というプロパティを持つ MyObject。 MyObject インスタンスのリストがあるとします。このリストに対して ToList() を実行し、その後新しいリスト内の要素の 1 つの SimpleInt プロパティを変更した場合、この変更は元のリストに反映されますか?
ToList( ) Function
ToList() メソッドは、元のリストの新しいコピーを作成するように設計されています。ただし、この特定の状況では、参照型を扱っています (つまり、MyObject は参照型です)。これは、ToList() を使用して新しいリストを作成すると、新しいリストには元のリストと同じオブジェクトへの参照が含まれることを意味します。
参照型の結果
MyObject は参照型であるため、新しいリストで参照されるオブジェクトの SimpleInt プロパティを変更すると、元のリストの対応するオブジェクトにも影響します。これは、両方のリストが同じインスタンスを指しているためです。
構造体とクラス
この動作は参照型にのみ適用されることに注意することが重要です。 MyObject がクラス (参照型) ではなく構造体 (値型) として宣言された場合、ToList() によって新しく作成されたリストには、元のリスト要素のコピーが含まれます。したがって、新しいリスト内の構造体要素に加えられた変更は、元のリストには影響しません。
以上がToList() はリストの深いコピーまたは浅いコピーを作成しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。