「大人の教養・知識・気付き」を伸ばすブログ

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。

MENU

【プログラム】1週間でC#の基礎が学べる本(6/6)

 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
{
   処理③
}

14. おわりに

 以上で、本書を用いたC#の学習は以上である。ただし本書はLINQラムダ式型推論や参照型は割愛しているとのこと。そのため、別の書籍で順次勉強していきたい。

プライバシーポリシー お問い合わせ