vb.net Listのコピーについて

プログラムを作成していて、プロパティのListをそのまま渡してしまうと渡した先で変更があった場合に、元の変数も変更されてしまう

'使用例 List1はプログラムの更新前の値として保管して
'List2を現在表示のリストとして使用・変更する場合
Dim List1 as New List(of String){"ブログ","日記","テスト"}
Dim List2 as List(of String) = New List(of String)(List1)

'変更の取り消し・戻るときはList1を使用
'更新処理を行うときはList2を使用

先輩からのありがたいお話

Listなどで書き変わる理由を聞けたのでここに書いていきます
はっきりした値 string,integer,booleanなど
Byval/ByRefどちらを指定していたとしてもその通りの動きをする

Listなどの配列はぱっと中身の値がわからないも
プログラムの内部アドレスを元に値が管理されており、
私のような初心者がByvalだからここのメソッドだけ書き換えれるんだなって思うのがそもそもの間違えであったのです、
なので、引数にByval Listなんて使い方をしている人は間違えて認識しているのかもしれません

6 件のコメント

  • Es ist in Wirklichkeit eine nette und nützliche Information. Ich bin zufrieden, dass Sie uns diese nützlichen Informationen gerade mitgeteilt haben. Bitte halten Sie uns so auf dem Laufenden. Danke für das Teilen. Bethanne Hillier Shugart

  • Uno puede aprender algo nuevo aquí todos los días. Estoy un habitual para la mayoría de los blogs, pero aún no sabía nada de un par de ellos. Leigha Renard Bubalo

  • I think this is among the most vital info for me. And i am glad reading your article.

    But want to remark on some general things, The site style
    is wonderful, the articles is really excellent : D.
    Good job, cheers

  • コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です