C#を使うようにはなったものの、具体的な機能については未習熟なので(というかまだ使うべき状況が出てきていないので)
を読んで、まずは最低ラインを学んでいく。
11. コレクション
大量のデータを扱いたいときに用いる配列には「予め格納できるデータの数が決まっている」という欠点がある。これを解消するのにコレクションを用いる。
using System.Collections.Generic;
11.1 リスト
コレクションの中でも最も利用頻度が高いのがリスト(List)である。
Listは長さが変更可能な配列のようなデータ構造である。長さを自由に変更でき、データを途中に挿入できる。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading Tasks; namespace Sample601 { static void Main(string[] args){ List<int> a = new List<int>(); a.Add(3); a.Add(2); a.Add(1); a.Insert(1,4); for (int i=0; i < a.Count; i++) { Console.WriteLine("a[{0}]={1}", i, a[i]) } } }
Listを宣言するときの<>(
リストへのデータ追加にはAddメソッドを、生成済みの配列の途中にデータを挿入するにはInsertメソッドを利用する。格納済みのデータの数を数えるにはCountメソッドを用いる。
データの削除には、指定したデータを削除するRemoveメソッド、指定したインデックスのデータを削除するRemoveAtがある。
表1 Listの主要なメソッド
メソッド |
働き |
Reverse() | 全体の要素の順序を反転させる。 |
Find() | 指定されたデータを探し、最も小さいインデックスを返す。 |
Exists() | 指定されたデータと同じものが存在するかを調べる。 |
Clear() | すべてのデータを削除する。 |
Sort() | オブジェクトを並び替える。 |
11.2 ハッシュテーブル
配列の一種で、キーと値のペアを保持している。これを実現するクラスが、Dictionaryクラスである。ハッシュテーブルはインデックスに順序や前後関係があるわけではない。
Dictionary<キーの型/クラス名, 値の型/クラス名> 変数名 = new Dictionary<キーの型/クラス名, 値の型/クラス名>();
インスタンスの入った変数名[キー] = 値;
11.3 ハッシュセット
データを重複なく管理するために用いるクラスがハッシュセット(HashSet)である。
HashSet<型/クラス名> 変数名 = new HashSet<型/クラス名>();
12. デリゲート
他クラスのメソッドを参照するオブジェクトとしてデリゲート(delegate)がある。指定した同一の戻り値の型、引数を取るメソッドをオブジェクトとして利用できる。
デリゲートを利用するメリットは、処理を任せる側が実際に処理するのはどのクラスなのか、どのような処理をするのか、ということを全く意識しなくても良い点である。
同型であれば複数のメソッドを追加できる。その実行順序は追加された順になる。
delegate 戻り値の型 デリゲート名(引数のリスト);
13. 例外処理
例外処理にはtry~catchブロックを用いる。
- 例外が発生すれば、処理①→処理②→処理③と処理が発生する。
- 例外がなければ、処理①→処理③と処理が発生する。
catchは複数指定することが出来る。finallyは省略可能だが、1つしか指定できない。
try
{
処理①
}
catch(例外クラス名 変数)
{
処理②
}
finally
{
処理③
}