ディープコピーとシャローコピーの違い
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)
で参照渡しを指定できる