問題タブ [shallow-copy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gdi+ - オブジェクトのライブラリ - アクセス インデックス値またはオブジェクト自体? (たとえば、深いコピーと浅いコピーの違いは?)
.Net が参照をコピーする方法について、私は常に混乱/不確かでした。GDI+ 用の Bitmap オブジェクトがあるとします。
「Foo」はビットマップ オブジェクトを保持します。今、私がこれをするとしましょう。
これは浅いコピーですか、それとも深いコピーですか? foo を何も設定しない場合、bar も突然「何もない」を参照しますか? または、バーにはビットマップのコピーも含まれていますか?ビットマップをメモリから完全に削除するには、「foo」と「バー」の両方を何も設定する必要がありますか?
ビットマップのライブラリをメモリに保持する必要があります。インデックスを使用してコーディングし、毎回ライブラリを参照するよりも、作成された各オブジェクトの各ビットマップへの参照を変数として格納する方が簡単です。必要です (「BitmapLibrary.Singleton.getBitmap(id)」など)
一言で言えば、私はこれを行うことができます:
これの代わりに:
language-agnostic - コピー コンストラクター/演算子/関数は、実装するコピー バリアントを明確にする必要がありますか?
昨日、C# でのオブジェクトのコピーについて質問しましたが、ほとんどの回答は、ディープ コピーとシャロー コピーの違いと、特定のコピー コンストラクター (または演算子、または関数) が両方のコピー バリアントのどちらであるかを明確にする必要があるという事実に焦点を当てていました。実装します。これは奇妙だと思います。
私は、コピーに大きく依存する言語である C++ で多くのソフトウェアを作成しましたが、複数のコピー バリアントが必要になることはありませんでした。私がこれまでに使用した唯一の種類のコピー操作は、「十分な深さのコピー」と呼んでいるものです。次のことを行います。
- オブジェクトがメンバー変数の所有権を持っている場合 ( compositionを参照)、再帰的にコピーされます。
- オブジェクトがメンバー変数に対する所有権を持たない場合 ( aggregationを参照)、リンクのみがコピーされます。
さて、私の質問は 3 つあります。
- 1) オブジェクトが複数のコピーバリアントを必要とすることはありますか?
- 2) コピー関数は、それが実装するコピーバリアントを明確にする必要がありますか?
- 3) 余談ですが、私が「十分に深いコピー」と呼んでいるものについて、より適切な用語はありますか? 「ディープコピー」という用語の定義について、関連する質問をしました。
python - App Engineモデルインスタンスを浅くコピーして新しいインスタンスを作成するにはどうすればよいですか?
AppEngineアプリに単純なVersionedModelベースモデルクラスを実装したいと思います。コピーするフィールドを明示的に選択する必要のないパターンを探しています。
私はこのようなことを試していますが、それは私の好みのためにハックすることであり、まだ実稼働環境でそれをテストしていません。
App Engineモデルのバージョンの履歴を保持するためのよりシンプルでクリーンなソリューションを持っている人はいますか?
編集:copy
txから移動しました。提案のためのThx@AdamCrossland。
c# - .net memberwiseclone の浅いコピーが機能しない
this.MemberwiseClone() を使用して浅いコピーを作成していますが、機能していません。以下のコードを見てください。
プログラムを実行すると、objCustomerShallowCopy.Name が「Jim」ではなく「James」と表示されます。
何か案は??
java - Androidのインテント内のオブジェクトの浅いコピー
インテントを通じて他のアクティビティに渡したいオブジェクトがいくつかあります。ただし、それらは読み取られるだけなので、他のオブジェクトの浅いコピーである必要があるだけです (変更される場合でも、元のアクティビティでも変更する必要があります)。また、オブジェクトのすべてのフィールドがシリアライズ可能であるとは限らないため、オブジェクトをシリアライズ可能にすることもできません。
また、パーセル化すると同じ問題が発生するようです。確かに、いくつかのフィールドをアクティブ オブジェクトとして追加できるように見えますが、すべてを浅いコピーにすることはできません。
インテント内のオブジェクトの浅いコピーを作成する方法、または通常 Java でパラメーターを渡すように、データの浅いコピーを別のアクティビティに渡す方法はありますか? ありがとうございました。
linq - 返品を作成するときにLINQの新しいメモリが追加されますか
LINQ は実際に結果のディープ コピーを別のリスト/配列/etc に実行しますか、それとも単純にリスト/配列/etc を提供しますか? オリジナルへの参照で構成されていますか?
arrays - .slice()が「浅いクローン」であるとはどういう意味ですか?
ActionScriptのArrayクラスとVectorクラスには、どちらもslice()メソッドがあります。パラメータを渡さない場合、新しい配列またはベクトルは元のベクトルの複製(浅いクローン)になります。
「浅いクローン」とはどういう意味ですか?具体的には、の違いは何ですか
と
?また、Vectorの基本型がFooではなく、intのような単純で不変なものである場合はどうなりますか?
アップデート:
次の結果はどうなりますか?
ありがとう!♥</p>
c++ - C ++のデフォルトの代入演算子=は浅いコピーですか?
他のどこにも確かな答えが見つからなかった簡単な簡単な質問です。デフォルトの operator= は、右側にあるすべてのクラスのメンバーの単なる浅いコピーですか?
次と同じです。
テストするとこれは正しいようですが、特定のケースを見逃していないことを確認する必要があります。
c++ - 浅いコピーの問題は何ですか?
これは私がここから見たインタビューの質問です:http: //www.careercup.com/question?id = 1707701
これについてもっと知りたい。ありがとう