C# 4.0:最新トレンドをマイクロソフト 大野元久氏が解説

杉山貴章(オングス)
2009-01-29 19:10:01
  • このエントリーをはてなブックマークに追加

 1月27日から28日の2日間に渡り、マイクロソフトの主催による「Microsoft tech days Japan 2009」が開催された。本稿では2日目に行われたブレイクアウトセッションから、マイクロソフトでエバンジェリストを務める大野元久氏による「C# 4.0」の様子をお伝えする。

オブジェクトの動的な型付けをサポート

 大野氏はまず、昨今のプログラミング言語のトレンドとして「Declarative(宣言型)」「Dynamic(動的)」「Concurrency(並列性)」の2つを挙げた上で、これらの要素を含むC# 4.0の代表的な新機能として以下の4つを紹介した。

  • 動的に型付けされるオブジェクト
  • 省略可能な名前付きパラメータ
  • COM相互運用性の改善
  • 共変性と反変性

 中でも最も大きなポイントとなるのが動的型付けのサポートである。.NETフレームワーク上では、動的言語ランタイム(Dynamic Language Runtime:DLR)によって動的プログラミングがサポートされる。例えばIronPythonやIronRubyなどもDLR上で動作する言語である。C# 4.0でもこの基盤を利用して動的プログラミングが可能になる。

 具体的には、新たに「dynamic」という型が用意され、これが「動的な型」を表すことになるという。dynamic自身は静的な型だが、この型で宣言された変数は、実行時の状態で初めて実際の型が決定することになる。var型のようにコンパイル時には型推論をするわけではなく、あくまでも実行するまで型が決定しない点が大きな特徴だ。

 リスト1は大野氏が紹介した実際の記述例である。この場合、calcの型は実行時に初めて決定する。したがって2行目のAddメソッドが実際にどのクラスのメソッドなのかは、コンパイル時にはわからない。また、戻り値の型がdynamicの場合、sumに代入される際には動的にint型に変換されるという。

マイクロソフト エバンジェリスト 大野元久氏 マイクロソフト エバンジェリスト 大野元久氏

リスト1 dynamic型の使用例 その1

dynamic calc = GetCalculator();
int sum = calc.Add(10, 20);

 リスト2のようなケースでも、オペランドがdynamicの場合には、メンバー選択はコンパイル時には行われず、実行時にdynamicが実際の型に置き換えられるようになるという。またこの場合、演算の静的な結果型はdyanmicである。

リスト2 dynamic型の使用例 その2

dynamic x = 1;
dynamic y = "Hello";
dynamic z = new List<int> { 1, 2, 3 };

 上記に加え、dynamicな特性を持った型を独自に定義することもできるようになるとのこと。C# 4.0にはIDynamicObjectというインタフェースが用意され、これを実装することでdynamicなクラスを定義できる。大野氏はこの機能によって「dynamicの能力を最大限に活かしたプログラミングができる」と語っている。

省略可能な名前付きパラメータ

  • 新着記事
  • 特集
  • ブログ
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]