ディープコピーとシャローコピーの違い
Topic
ITのカタカナ英語のメモ
ディープコピー deep copy
- 値渡し(新しくメモリ上にデータを複製する)
- 実体(データ)のコピーを行い、オブジェクトをコピーする
- オリジナルとコピーのどちらかのオブジェクトへの変更が影響されない
C#は、変数をそのまま代入すると値渡しになる
Pythonは、copyで変数に代入すると値渡しになる
VBAは、Sub Func(ByVal a As String)で値渡しを指定できる
シャローコピー shallow copy
- 参照渡し(メモリ上の参照を代入する)
- 実体(データ)のコピーを行わないで、オブジェクトをコピーする
- オリジナルとコピーのどちらかのオブジェクトへの変更が反映される
C#は、refやoutで渡すと値渡しになる
Pythonは、=で変数に代入すると参照渡しになる
# リストをシャローコピーする
copied_list = list[:]
# 辞書型をシャローコピーする
copied_dict = dict
# 数値をシャローコピーする
copied_num = num
# 文字列をシャローコピーする
copied_str = str
VBAは、Sub Func(ByRef a As String)で参照渡しを指定できる