路傍のプログラマ

只のプログラマが綴る愚痴と備忘録

C#2.0のテンプレートは期待して良い?

2005-09-30 01:33:59 | プログラミング
そろそろVisual Studio 2005 RCの足音も聞こえてくる今日この頃、気になってちょっとC#2.0を調べてみました。記事1記事2

Genericsで重要なのは、以下の3つだと思います。
1. 型のパラメタライズ
2. 特殊化
3. 型の制約記述

C++のテンプレートは1と2をサポートし、JavaのGenericsは1と3をサポートします。

2の特殊化がC++のテンプレートに取り入れられた理由は、テンプレートの「オーバーロード」(例えば、組込型とオブジェクト型で違うコードを使ってほしいといった要求に応える)を可能にするためでした。その後、特殊化は再帰テンプレートという技術に応用され、コンパイル時に計算されるコードの記述に使われることになりました。

3の型の制約記述は、テンプレートを型システムと整合させる(単なるマクロの代替として使うのではなく)のに重要な機能ですが、C++ではサポートしていません。

上述の記事を読む限り、C#2.0のテンプレートは1, 2, 3のすべてをサポートするようです。C#2.0のテンプレートがちゃんと機能して、うまくは流行れば、そのうちメタテンプレートライブラリがごそっと移植されて・・・うーん。後はMonoProjectがC#2.0に追いついてくれればなあ・・・。(MonoProject、いつの間にか、2.0の実装をほぼ完了“almost complete for 2.0”だそうです。早い。2005/10/06)

追記 2005/10/13
記事「動的プログラミング言語へと発展するC# 3.0とVB 9.0」によると、どうやら、C#3.0では、独自の道を行こうとしているようです。上記1, 2, 3にくわえて、型推論、および、ラムダやLINQといったこってりしたシンタックスシュガー。ここまでくると、本格的に、コンパイラのエラーメッセージが可読かどうか気になる・・・

最新の画像もっと見る