2011年2月19日土曜日

(C#, VB.NET)List<T> の簡易コピー

 List<T>の簡易コピー(シャローコピー)です。

C#
    List<string> aList = new List<string>(new string[] {"abc", "def"});
    List<string> bList = new List<string>(aList);

VB.NET
    Dim aList As List(Of String) = New List(Of String)(New String() {"abc", "def"})
    Dim bList As List(Of String) = New List(Of String)(aList)

コンストラクタでコピー対象の List を指定するとコピーされます。
値型の場合は、値そのものがコピーされます。
参照型の場合は、参照がコピーされます。
参照型でオブジェクトもコピーしたい場合は、別途ディープコピーの実装が必要です。

サンプルの内容は
  1. 1行目で string の List を作成し初期値を設定
  2. 2行目で string の List を作成し1行目で作成した List をコピー
です。

サンプルで使用している string はクラスなので、本来であれば参照型ですが string クラスは例外的に値型と同様の動きをします。

■環境
OS:Microsoft Windows XP Home Edition 日本語 Service Pack 3
IDE:Microsoft Visual Studio 2005 Standard Edition 日本語 Service Pack 1
Framework:Microsoft .NET Framework Version 2.0 SP2