+」キーワードは動的言語との相互運用にのみ使用されるべきであると話しました。彼はまた、通常の反射(それ自体はやや遅い)に比べて、やや遅いと言っています。それから私はスコットHanselmanが動的キーワードが「反射をより痛みを少なくする」と述べているのを聞いた。Answer7私は「いいえ」と言うでしょう、しかし不当にそれを使い始めないでください。+`を常に使用するのではなく)デリゲートを保持しているため、基本的なリフレクションより_faster_です。2つの長所があります。痛い)呼び出し元オペレーターただし、インターフェイスなどで必要なことを行う方法を使用しています。+`は、実際にはダックタイピングに相当します。これは*非常に限られた*シナリオのセットで役に立ちます。ほとんどの場合:インターフェースが優先されます。除外しないでください。+`の欠点は、(非常識なコードを書かずに)役に立つためには、コンパイル時に名前を知る必要があるということです。多くの場合そうではありません。+`など)を使用して高速でデータにアクセスできます。source4アヒルの型付けが必要で、コンパイル時の型の安全性があまり必要ないと思われる場合は、先に進んでdynamicを使用してください。私はそれがC#のみのコードでポップアップするための多くの新しい使用法があると確信しています(ExpandoObjectを使用してXMLのような動的なデータソースを問い合わせるなど)。私は、多くの新しい用法が不必要になることを確信しています。ジェネリックの多くの使用は、多態性を表現するためのもっと複雑な方法です。4のDLRは動的型付けを「高速」にしようとしています。いつものように、それが十分速い場合は、アプリケーションのプロファイリングを開始するときに理解できるものです。+`キーワードがC#で導入された主な理由は、COMオブジェクトとの相互運用を容易にすることでした。ためだけではありません。COM相互運用機能はその一例です。C#チームはこの機能を使用するようにCOM相互運用機能を既に変更しており、これにより相互運用機能がはるかに簡単になりました。MVCビューが似たようなことをしているのを見ました。[C#4.0の動的:DynamicObjectを使用したラッパーの作成]。これらはまさにFreedが話していた例のタイプです:XMLデータとの相互運用性の単純化。source1「いいえ」と言わなければなりません。期待されていない使用例としては、http://haacked.com/archive/2009/08/26/method-missing-csharp-4.aspxをご覧ください。dynamicキーワードは、COMおよび動的言語をより扱いやすくすることを明確に意図していましたが、それは私たちがそれをそれらの分野に限定するべきではないことを意味します。パフォーマンスに関する限り:それを覚えておいてください、しかしあなたがパフォーマンスの問題を抱えるまでそれに集中しないでください。(これは、始める前にパフォーマンスを低下させる可能性がある高水準設計の選択に影響を与える可能性が低い、これらの低水準の詳細の1つです。)編集また、優れた言語設計者であれば、人々が言語機能を予期しない方法で使用することに気付いています。動的な動作を可能にするインターフェイスを作成したため、これは特にこの説明に関連しています。意図的に、人々が「動的な」キーワード機能にほとんど何でもフックできるようにしました。<Object>に含まれているタイプを確認する方法を教えてください。