コレクションを利用しよう (2/6)
作成:2014-03-08 09:51
更新:2014-03-08 09:51
更新:2014-03-08 09:51
■ジェネリックを利用する「List」
ArrayListは、なんでもオブジェクトを放り込んでおけるものでした。が、逆にいえば「何が入っているかわからない」ということでもあります。決まった種類のオブジェクトだけを保管しておくような場合は、「List」というクラスを使うのがよいでしょう。
これは「ジェネリック」(総称型)に対応したArrayListです。ジェネリックというのは、さまざまな種類のオブジェクトが保管できるクラスに「このクラスだけ保管できる」という規約を設定するための機能です。ジェネリック対応のコレクションクラスは、 System.Collections.Genericというパッケージに保管されています。
このListは、以下のような形でインスタンスを作成します。
●インスタンス作成
Listの基本的な使い方は、ArrayListと同じです。AddやInsertで追加し、Removeで削除する、[]でインデックス番号を指定して読み書きする、すべてArrayListと同じメソッドが用意されています。ですからArrayListがわかれば、全く同じ感覚でListも使えるようになります。
唯一の違いは、「取り出したものはObjectインスタンスではなく決まったクラスのインスタンスになっている」という点でしょう。なにしろ作る際に保管できるクラスを指定しますから、取り出される値もすべてそのクラスのインスタンスに決まっています。だったらいちいちキャストしないで済んだほうが便利でしょう?
下に、先ほどのArrayListのサンプルをそのままListに書き換えた例を挙げておきましょう。基本的な使い方は全く同じことがわかるでしょう。
これは「ジェネリック」(総称型)に対応したArrayListです。ジェネリックというのは、さまざまな種類のオブジェクトが保管できるクラスに「このクラスだけ保管できる」という規約を設定するための機能です。ジェネリック対応のコレクションクラスは、 System.Collections.Genericというパッケージに保管されています。
このListは、以下のような形でインスタンスを作成します。
●インスタンス作成
List< クラス名 > 変数 = new List < クラス名 >();これにより、指定したクラスのインスタンスしか保管できないListインスタンスが作成されます。
Listの基本的な使い方は、ArrayListと同じです。AddやInsertで追加し、Removeで削除する、[]でインデックス番号を指定して読み書きする、すべてArrayListと同じメソッドが用意されています。ですからArrayListがわかれば、全く同じ感覚でListも使えるようになります。
唯一の違いは、「取り出したものはObjectインスタンスではなく決まったクラスのインスタンスになっている」という点でしょう。なにしろ作る際に保管できるクラスを指定しますから、取り出される値もすべてそのクラスのインスタンスに決まっています。だったらいちいちキャストしないで済んだほうが便利でしょう?
下に、先ほどのArrayListのサンプルをそのままListに書き換えた例を挙げておきましょう。基本的な使い方は全く同じことがわかるでしょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
using System; using System.Collections.Generic; namespace MyCLIApp { class Program { public static void Main(string[] args) { List<string> list = new List<string>(); list.Add("One"); list.Add("Two"); list.Add("Three"); list[0] = "Zero"; foreach(String str in list){ Console.WriteLine(str); } Console.ReadKey(true); } } }
※関連コンテンツ