インターフェイスを処理する場合、開発者はしばしば必須の変換またはオブジェクトタイプ変換を使用してオブジェクトを動作させます。ただし、これらの変換を実行するには2つの異なる方法があります。強制変換と「As」キーワードを使用します。これら2つの方法に違いはありますか?もしそうなら、彼らはどのようにプログラムの実行とパフォーマンスに影響を与えることができますか?
必須の変換を理解してください必須変換には、オブジェクトの参照の前にターゲットを配置する前にターゲットタイプが含まれます。ブラケットでは、オブジェクトはあるタイプから別のタイプに明示的に変換されます。たとえば、
強制変換インジケーターコンパイラーは、型変換をすぐに実行します。変換が無効な場合、異常を引き起こします。「as」キーワード
IMyInterface _MyObj = new MyClass(); MyClass _myCls1 = (MyClass)_MyObj;
を探索します
"as"キーワードは、非侵襲的型を実行します。ただし、変換が成功した場合、「As」は変換オブジェクトを返します。必須の変換と比較して、「AS」は代替方法を提供します。代わりに、nullリファレンスを返します。<本>コストの比較
過去には、変換と「AS」キーワードの使用とのパフォーマンスの違いに違いがありました。強制変換操作は、1つのステップ型変換のみが含まれるため、より速いです。ただし、現代のJITコンパイラの進歩により、「AS」キーワードの効率は必須の変換と同じくらい高くなっています。両方のテクノロジーは、タイプ変換をすばやく実装できるため、パフォーマンスの観点からパフォーマンスを無視できます。
IMyInterface _MyObj = new MyClass(); MyClass _myCls2 = _MyObj as MyClass; // 如果转换不成功,_myCls2 将为 null
最良の方法を選択します
パフォーマンスはもはや決定的な要因ではありませんが、他の側面は必須の変換と「as」の選択に影響します。セキュリティコンバージョン:
変数を処理する場合、「変数のタイプがテストと変換の間に変化する可能性があるため、」を使用することをお勧めします。これにより、変換が無効になることによって引き起こされる異常なリスクが減少します。 次の点分離:
"as"キーワードでは、テストと変換の手順を分離できます。これにより、コードの読みやすさが向上し、軽微なエラーの可能性が低下します。
以上がc#のキーワードとしてcasting vs. 'as as as as c#:いつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。