2009-05-14 9 views

答えて

3

CLRとその基礎となる実行モデルは、静的型付き言語に最適化されています。 .NETを使用したクラスライブラリのほとんどすべてのメソッドは、型システムSystem.Objectのルートよりも正確に型指定された引数をとります。

動的に型指定された言語では、実行時に異なる機能セットが必要です。動的に型指定されたコードを効率的に実行する能力が必要です。たとえば、動的に型指定された言語が通常のCLRクラスを呼び出す場合、各引数をCLRクラスの静的に定義された型に変換および/または型変換する必要があります。これが慎重に行われないと、効率が悪くなる可能性があります。

同様に、動的に型指定された言語は、明示的に型付けされたプロパティ、メソッド、フィールドなどを持つCLRクラスモデルに簡単にマッピングできないオブジェクトモデルを持つことがよくあります。代わりに、オブジェクトはハッシュテーブル、キーは文字列(またはシンボル)で、値はメソッド、クロージャ、またはオブジェクト値そのものです。オブジェクト(および/またはそのタイプ)は、実行時にも拡張可能なことがよくあります。

動的タイピングされた言語間に類似点があるため、相互運用性と動的言語実装の両方を容易にし、CLRの最適化を容易にするために共通性を基本機能セットに抽出すると便利です特に動的言語に重点を置くこと。 C#の新しいdynamicキーワードは、DLRのメカニズムを使用して、COMオートメーションオブジェクト、IronPython、IronRubyなど、動的に型指定された言語やオブジェクトシステムとの相互運用を支援します。

1

DLRは非常に強力で便利です。たとえば、DLRでは、C#で書かれたアプリケーションで任意のRubyまたはPythonスクリプトを実行できます。他にもたくさんの利用シナリオがありますが、これまで動的スクリプトホスティングは私にとって最も有用なものでした。

0

あなたはDLRで

string firstName = (string)Session["FirstName"]; 

を書くの疲れか、あなたは、単に新しいC#はDLRで機能の一部を使用します

dynamic firstName = Session.FirstName; 
+0

DLR per seその新しいC#機能です。 –

+0

いいえ、私の意見では、これは避けるべきもう一つの特徴です。むしろ明示的なコードなので、私はむしろコードの細部を持っています。私はきれいなコードのファンです。このDLRに関しては、この種の問題に対処するために、アダプター、プロバイダーなどのパテントが既に用意されています。 CLRの世界の外で呼び出し環境にラッパーを提供するライブラリを持つことが、インタフェースとしてのコントラクトの作成です。 – Marco

0

を書くことができます。新しいコンストラクトと言語要素が交信しています。

1

これは、.NET CLRとそのすべての機能を使用するためのオプションと柔軟性を開発者に提供します。 C#、F#、Rubyなど、あなたが最もよく知っている言語、または手元にあるタスクに最も適した言語を使用することができます。

+0

+1 C#、VB.netを習得する代わりに、RubyやPythonなどの動的言語のいずれかで専門知識を活用して、引き続き生産性を高めることができます。コードを実行しているのが実際にはCLRであるという事実は、不透明な技術的な詳細になります。 – Gishu

関連する問題