この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 21258|答える: 0

[出典] C#におけるダイナミックの正しい使い方

[リンクをコピー]
掲載地 2016/07/07 10:15:06 | | |
動的要素はFrameWork 4.0の新機能です。 動的言語の登場により、C#は弱い言語タイプの特徴を持つようになりました。 コンパイラはもはやコンパイル時に型をチェックせず、動的オブジェクトはコンパイル時にデフォルトで任意の機能をサポートします。 例えば、GetDynamicObjectメソッドで返されるオブジェクトについて何も知らなくても、このようなコードコールを行うと、コンパイラはエラーを報告しません。




正しい使い方に関しては、まず一つの誤った使い方を指摘すべきです。

人々はしばしば動的と比較するためにキーワードvarを使います。 実際、varと動的は完全に二つの概念であり、比較すべきではありません。 コンパイルされると、コンパイル時間は自動的にvar変数の実際の型と一致し、変数の宣言を実際の型に置き換えます。これはエンコーディング時に実際の型を宣言しているかのように見えます。 動的型がコンパイルされた後は実際にはオブジェクト型ですが、コンパイラは動的型を特別に扱い、コンパイル中に型チェックを行わず、型型チェックを実行時に行います。

これはVisual Studioのエディタウィンドウで確認できます。 varとして宣言された変数はVisual Studioがvar型の実際の型を推測できるため「インテリジェントセンス」をサポートしますが、動的変数はコンパイラが実行時の型を知らないため「インテリジェントセンス」をサポートしません。 動的変数にインテリジェントセンスを使うと、「このアクションは実行時に解決されます」と表示されます。

動的変数がオブジェクト変数であることはILコードで検証可能であり、ILコードはここに掲載されません。 もちろん、コンパイラは直接オブジェクト変数を区別するための動的宣言も扱います。

MSDNでは相互運用性を簡素化するために動的(dynamic)が広く描かれており、この点に基づいて一部の開発者は誤解されていると感じます。多くの開発者はCOM+やOFFICEの二次開発のようなコーディングの使い方を知らないため、動的なアプリケーションを急務に必要としているのです。 ですから、日々の発展においては、ダイナミックは価値があると思います。

タイプ変換
動的タイプのインスタンスと他のタイプのインスタンス間の移行は簡単で、開発者はダイミック振る舞いと非動的振る舞いを簡単に切り替えることができます。 任意のインスタンスは暗黙的に動的型インスタンスに変換可能です。以下の例を参照してください。
動的 d1 = 7;
動的 d2 = 「文字列」;
動的 d3 = System.DateTime.Today;
dynamic d4 = System.Diagnostics.Process.GetProcesses();
逆に、暗黙的変換は動的に型動的表現に適用可能です。
逆に、型動的表現は暗黙的に他の型に変換することも可能です。
int i = d1;
ストリングストル = d2;
DateTime dt = d3;
System.Diagnostics.Process[] procs = d4;
動的型パラメータに関する過負荷問題
もしメソッドが動的型のオブジェクトを渡すか、呼び出されるオブジェクトが動的型であれば、オーバーロードの判断はコンパイル時ではなく実行時に起こります。
動的言語ランタイム DLR
動的言語の実行時間は です。 NET Framework 4 Beta 1は、C#の動的型をサポートし、IronPythonやIronRubyのような動的プログラミング言語も実装する新しいAPIセットです。
動的処理は反射を簡素化します。

以前はこのような反射を使っていました:



さて、簡略化して書く方法があります:


私たちはこのような単純化を軽視するかもしれません。結局のところ、コード自体はあまり削減されていないようですが、効率性と美しさという二つの特徴を考慮すると、動的の利点は明らかです。 コンパイラは、キャッシュされていない反射効率よりもはるかに高速になるように動的最適化を行います。 もし比較が必要なら、上記の2つのコード(Call Add メソッド部分)を1000000で実行して結論を導き出すことができます。






先の:mvcはpostのJSON XMLデータを取得します
次に:認識エラーが発生しました。 1行目付近、10列
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com