4

C# の switch ステートメントは、ここで説明したステートメントのケースに応じて、CIL スイッチ命令または if/else にコンパイルできます。コードのブロックで常に if/else バリアントを生成するようコンパイラに強制する方法はありますか?

4

4 に答える 4

7

最も簡単な方法は、コードで if/else を使用することです。他のことは別として、これにより、スイッチを使用する代わりにそれを実現したいことが読者に明確になります。

編集:わかりました。読みやすさは重要ではありませんが、基本的に、コンパイルされたコードを変更したい場合は、ソース コードを変更する必要があります。Mono コンパイラを使用して自分で変更することもできますが、switch ステートメントを使用していることを Microsoft コンパイラに効果的に無視させる方法があるとは思えません。

于 2009-04-18T10:38:01.823 に答える
2

別のコンパイラ (つまり、Mono) を試しましたか、または問題のあるクラスを別のアセンブリに配置して別の言語に切り替えようとしましたか?

于 2009-04-18T11:18:16.750 に答える
0

いいえ、C# コンパイラが CIL 命令を発行する方法を制御することはできません。また、たとえできたとしても、高度なコンパイラの最適化により、AOT または JIT コンパイラは CIL 命令をネイティブ マシン コード命令に変換する可能性があり、予想とは大きく異なる場合があります。

于 2010-06-07T05:04:15.593 に答える