C#Note | Visual Studio | MSDN | MSDN ライブラリ | VSUG |

目 次

101: ジェネリックスとは?
102: 「System.Collections.ArrayList」と「System.Collections.Generic.List」の違い。
103: List(T).ForEach メソッド 。
104:
105:
106:
107:
108:
109:
110:
101: ジェネリックスとは?
さまざまな型に対応するために、型をパラメータとして与えて、その型に対応したクラスや関数を生成するもの機能です。
102: 「System.Collections.ArrayList」と「System.Collections.Generic.List」の違い。
ArrayListは便利なのでよく使うが、型のキャストが必要なので注意が必要。


ArrayList
private void button_ArrayList_Click(object sender, EventArgs e) {
    System.Collections.ArrayList _ArrayList = new System.Collections.ArrayList();
    /*ArrayListはobjectなので文字でも数値でもOK*/
    _ArrayList.Add("aaaaa");
    _ArrayList.Add("bbbbb");
    _ArrayList.Add(100); /*実行時にエラー*/
 
    for (int i = 0; i < _ArrayList.Count; i++) {
        Console.WriteLine("index:{0}", i);
        string a = (string)_ArrayList[i];
        Console.WriteLine("結果:{0}", a);
    }
}

List
private void button_List_Click(object sender, EventArgs e) {
    /*明確にstringを指定*/
    System.Collections.Generic.List<string> _List  = new List<string>();
    _List.Add("aaaaa");
    _List.Add("bbbbb");
    /*コンパイルエラー*/
    //_List.Add(100); /*実行前にエラーがわかる*/
 
    for (int i = 0; i < _List.Count; i++) {
        Console.WriteLine("index:{0}", i);
        /*キャストはいらない*/
        string a = _List[i];
        Console.WriteLine("結果:{0}", a);
    }
}
103: List(T).ForEach メソッド 。
List(T) の各要素に対して、指定された処理を実行します。
private void button1_Click(object sender, EventArgs e) {
    List<String> _東西南北 = new List<String>();
    _東西南北.Add("東");
    _東西南北.Add("西");
    _東西南北.Add("南");
    _東西南北.Add("北");
 
    Console.WriteLine("1.-----------------------------");
    /*各要素に対してPrint処理する*/
    _東西南北.ForEach(Print);
 
    Console.WriteLine("2.-----------------------------");
    /*_東西南北の要素を1つ1つ取り出す*/
    _東西南北.ForEach(delegate(String _na) {
        Console.WriteLine(_na);
    });
 
    Console.WriteLine("3.-----------------------------");
    /*上記と同じ*/
    foreach (string _na in _東西南北) {
        Console.WriteLine(_na);
    }
}
 
/* プリント処理 */
private static void Print(string s) {
    Console.WriteLine(s);
}


1.-----------------------------

西


2.-----------------------------

西


3.-----------------------------

西


104:
105:
106:
107:
108:
109:
110:
 
この Web サイトに関する感想などについては、takamorimail@yahoo.co.jpまで電子メールでお送りください。ただし、技術的な質問にはお答えできません。
Copyright (C) 2008 Takamori