第8回 ジェネリックまとめ
これまでジェネリックが導入されることで1.xと2.0でどのようにプログラムが変わるかを見てきた。
もともとジェネリックが利用されていなかったSystem.Collections名前空間はすべてSystem.Collections.Genericsに置き換わったととってもらってかまわない。
以前のクラスと、2.0からのクラスの対比表は以下のとおりだ。
| 1.x |
2.0 |
| ArrayList |
List<T> |
| HashTable |
Dictionary<K, V> |
| Queue |
Queue<T> |
| Stack |
Stack<T> |
| SortedList |
SortedDictionary<K, V> |
| |
LinkedList<T> |
| |
Collection<T> |
1.xで存在したコレクション系クラスはすべて置き換わるものがジェネリックで提供されている。
とはいえ、たとえばArrayListにはObsoletedAttributeは付けられない。
どのような型でも取りうるArrayListにはまだ寿命が残っているということだろう。
ただしForEachメソッドなどの新しい仕組みを利用可能にするために、やはりList<T>に移行すべきだろう。
以前までと同じ使い方をしようと思えばList<Object>とするだけで以前と同じ使い方が可能になっている。
いままでわざわざArrayListをラップしたクラスを作って、受け入れる型を制限してきたことを考えるだけで大きな進展である。
是非2.0のジェネリックを使ってほしい。
連載をまとめてあります。
http://blogs.users.gr.jp/naka/category/285.aspx