BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース C#の機能:動的タイプトオブジェクトおよび複数ディスパッチ

C#の機能:動的タイプトオブジェクトおよび複数ディスパッチ

最初のC#の機能について詳細に調べる前に、MicrosoftがC#にあるあらゆる機能をVBで提供する(その逆も)ことを約束していることをここで述べておく。しかしながら、必ずしも同様の方法で提供されるとは限らず、言語は引き続き分岐することが予想される。

動的言語やDLRの重要性が高まる中で、C#は動的に型付けされたオブジェクトと動作できることが必要とされる。現在、リフレクションや静的クラス経由で レイトバウンドコールをすることが可能であるが、これには多くのコードが必要である。その上、DLRオブジェクトの呼び出しには、DLRのリフレクション ライブラリを使用して、全く異なる呼び出しが必要である。

C#においては、単にオブジェクトの静的タイプを「動的」として宣言するだけである。VBのOption Explicit Offのように、ランタイムコールでメソッドバインディングを解決するために、コンパイラに必要なコードを出力するように言う。ILでは、動的として宣言 された変数は、System.Objectのような種類であり、動的呼び出しセマンティクスを使用することを示した追加のタグがついている。

ランタイムでは、通常のオーバーロードソリューションのすべてのルールが、オブジェクトのランタイムタイプに対して動作する。これは、リフレクションをジャンプしたり、ビジターパターンを使用せずに、複数のディスパッチを直接実行することができることを意味する。

各動的言語には、メンバールックアップの独自のルールがある。サポートのため、このオブジェクトはIDynamicObjectインターフェイスを 実装することができる。ランタイムオブジェクトにある場合、オブジェクトは独自のメンバールックアップを処理するようになる。デモのとき、Anders氏 はC#自体で動的オブジェクトを定義する方法を示した。

そして当然ながら、必要なときはどこででもC#でダックタイピングを使用することができる。

原文はこちらです:http://www.infoq.com/news/2008/10/CSharp-Dynamic

この記事に星をつける

おすすめ度
スタイル

BT