動的を使用するのは悪い習慣ですか?
次の C# コードを考えてみましょう。
MyClass myInstance = new MyClass(); dynamic mydynamicInstance = myInstance; //This method takes a MyClass argument and does something. Caller.InvokeMethod(myDynamicInstance);
この中でこのシナリオでは、動的引数を使用してメソッドを呼び出すと、実行時の型を決定できます。これは便利そうに見えますが、潜在的な欠点が潜んでいます。
動的を避ける理由
dynamic キーワードは遅延型バインディングを有効にし、システムは実行中にのみ型をチェックします。コンパイルの代わりに。これにより、エラー検出の責任がユーザーに課せられ、予期しない例外や不正な動作が発生する可能性があります。
動的の代替
特定の使用例に応じて、次のようなものがあります。動的使用に代わるいくつかの方法:
不明なメソッド呼び出しの動的代替
コンパイル時に呼び出されるメソッドが不明な場合は、次のことを考慮してください。テクニック:
パフォーマンスに関する考慮事項
ベンチマークの結果は、MethodInfo.CreateDelegate と DynamicMethod が比較的高速であり、Keyword Dynamic と MethodInfo.Invoke が優れたパフォーマンスを示していることを示しています。
結論
動的は利便性をもたらすかもしれませんが、型の安全性が犠牲になり、潜在的なエラーにつながる可能性があります。ほとんどの場合、コンパイル時の型チェックとパフォーマンスの向上を実現する代替アプローチを使用することをお勧めします。動的は、相互運用性のシナリオや明らかな利点がある場合など、控えめに使用する必要があります。
以上がC# で「dynamic」の使用を避けるべき場合は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。