連載:[完全版]究極のC#プログラミングChapter2 ジェネリック川俣 晶2009/08/17 |
|
|
2.2 新しいコレクションの紹介
リスト2.1で使用されているListクラスは、従来のArrayListクラスに相当するコレクションクラスである。ちなみに、Listクラスが属する名前空間は「System.Collections」ではなく「System.Collections.Generic」である。
このことからわかるとおり、ジェネリックなコレクションを使ううえでは、「名前が変わっている」、「名前空間が変わっている」という2つのポイントを踏まえなければならない。
このうち、名前空間のほうは基本的に1種類しかないので、さほど迷うことはないだろう。特に、Visual Studio 2008でソースファイルを作成すると、デフォルトで、
|
が書き込まれたファイルが作成されることも多いので、いちいち意識せずとも対応できるだろう。
問題は、コレクションクラス本体の名前が変わっている点である。素早く把握できるように、主要なコレクションクラスについての対応関係を表2.1にまとめておく。
| ||||||||||||||||||
表2.1 コレクションクラスの対応表 | ||||||||||||||||||
ジェネリックのコレクションクラスは.NET Framework 2.0以降でクラスライブラリに追加されたもの。もちろんこれには従来のコレクションクラスも含まれている。 |
ちなみに、Stackクラスのように、従来のものと名前が同じクラスが存在することに注意が必要である。これらは別の名前空間に属する異なるクラスである。そのため、ジェネリック使用の有無のほかにも相違があるケースがある。その中で、特に大きな問題については後で説明する。
さて、ArrayListからListへの名前の変更は、よく使われるクラスの名前がより短くなったということで使い勝手が良くなったといえるだろう(もっとも、ArrayListからList<string>になったと思うなら、短くなったとはいいにくいが……)。
一方、HashtableからDictionaryへの変化は、原型をまったくとどめない名前の変化といえる。これは、名前からの類推が通用せず、新しい名前を暗記するしかないだろう。
話はまだ終わらない。実は、ジェネリックのコレクションには、従来のコレクションにはない機能も増えているからだ。ここでは、そのような2つのクラスを紹介しておこう。
INDEX | ||
[完全版]究極のC#プログラミング | ||
Chapter2 ジェネリック | ||
1.2.1 ジェネリックとは何か? | ||
2.2.2 新しいコレクションの紹介 | ||
3.2.3 新しいコレクションクラス―LinkedListクラス | ||
4.2.4 新しいコレクションクラス―SortedDictionaryクラス | ||
5.2.5 ジェネリックコレクションの使い方 | ||
6.2.6 ジェネリックメソッドと型推論 | ||
7.2.7 HashtableクラスとDictionaryクラスの非互換性 | ||
8.2.8 ジェネリックなクラスを自作する | ||
9.2.9 制約の付いたジェネリックなクラス/C++のtemplate機能との相違/練習問題 | ||
「[完全版]究極のC#プログラミング」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|