2016-07-20 6 views
0
dynamic d = "hello"; 
Console.WriteLine (d.ToUpper()); // HELLO 
Console.WriteLine (d.Foo()); // Compiles OK but gives runtime error 

私は、このセクションでつまずいた本を読んでいますが、3行目にそれが唯一の実行時にエラーがスローされますが、それはFooメソッドが存在しないにもかかわらず、コンパイルします。動的変数コンパイル

実行時ではなくコンパイル時にチェックしてみませんか?

編集: この重要な意味は何ですか?このコンセプトはいつ使用できますか?

+0

あなたはそれを重複としてマークすることができます。この記事の唯一の目標は、経験豊富なプログラマーからの入力を得ることです。書籍や一部の投稿でもそれを見つけることはできません。 – Sherlock

答えて

4

dynamicとすると、コンパイラには無視し、ランタイムに処理させるように指示します。これは、コンパイラが知らないCOMやその他のインタフェースを扱うときに役立ちます。

暗黙のタイプを使用する場合は、代わりにvarを使用してください。コンパイラは型を推論し、型を強く型付けします。

+0

いつこのテクニックを使用できますか?またはそれを使用する適切な方法? – Sherlock

+3

@Desperado、あなたが読んでいる本には適切な使い方の説明もあるはずです。そうでなければ、同様の質問がたくさんあります。 – Rahul

+0

@Rahulはい私はそれを読むが、すべての概念と技術が存在するわけではない。経験豊かなプログラマーを対処するときには、 – Sherlock

4

dynamicキーワードは、この動作を意図しています。変数dynamicを作成するときは、すべてをコンパイル時に安全にすることができます。だから、それをdynamicにすることによって、コンパイル時のタイプを完全にバイパスすることができます。そのため、コンパイル時に注意が必要です。

実行時にメンバーを確認することは、dynamicの全体的なポイントですが、それ以外の理由はどうしてですか?

varキーワードのには、というコンパイル時の安全性があります。 this point for the difference on bothをご覧ください。 については、キーワードを使用するの場合はthis postをご覧ください。

+0

いつこのテクニックを使用できますか?またはそれを使用する適切な方法? – Sherlock

+0

通常、まったくそうではありません。使用する必要があるのは露の唯一の状況です。とにかく、私はあなたが*必然的に*する必要がない限り、それほど気にしません。 – HimBromBeere

+0

ありがとう!これは、私の評判の一部を失ったとしても役立ちます。司会者の嘆き – Sherlock