« C#で書き直してみた「MjQuickView 2.10β」 | メイン | MjQuickView 2.21 »

2006年03月14日

ジェネリッククラスで可変長配列を簡単に [C#]

C#で唯一不満だった、可変長配列の実装方法。ArrayListではどんな型でも格納できてしまうため、取り出すたびにいちいちキャストしてやらないといけない。この際にキャストに失敗して実行時エラーを出してしまうこともある。

しかし .NET Framework 2.0 ではその点が改善されているらしい。

ジェネリック・クラスで変わるC#とVBのコレクション @IT

List<string> names = List<string>();

というように、<>の中に型を指定してやることで、その型のみ(例ではstring)の配列を作ることが出来る。実質的には string[] で宣言したものの可変長版ということになるのだろうか。型が限定されることにより、取り出す際にキャストは必要ない。さらに値型では Boxing/UnBoxing も発生しないので実行効率は格段に上がる。 これは非常に便利な機能だ。

さっそく使ってみたが、それほど違和感無く使えた。元々Perlプログラマな私にとってはキャストというものが煩わしくて仕方が無いので、こういうのは大歓迎である。折角だから String[] 自体を可変長にしてくれればもっと嬉しかったのだが、そこまで文句は言うまい。

しかし@ITのサンプルでは内部で固定長配列を使っているみたいだけど、それではあんまり意味が無いのではと思ってしまった。まあ、実際はきちんと範囲拡張する処理を入れるのでしょうけれど。

投稿者 : 11:23 | コメント (0) | トラックバック (0)

トラックバック

このエントリーのトラックバックURL:
http://totora.jpn.org/mt/mt-tb.cgi/115

コメント

コメントしてください




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)