私はサードパーティのアウトソーシング会社から提供されたコードを確認していて、この小さな宝石に出くわしました。
try
{
int i = strOriginalData.IndexOf("\r\n");
////System.Diagnostics..EventLog.WriteEntry("i", i.ToString());
}
catch (System.Exception ex)
{
////System.Diagnostics..EventLog.WriteEntry("ex", ex.Message);
}
私の質問は、コンパイラがこれを完全に最適化するかどうかです。Reflectorでコンパイルされたアセンブリを見ると、次のように表示されます。
try
{
i = this.strOriginalData.IndexOf("\r\n");
}
catch (Exception exception1)
{
ex = exception1;
}
iの宣言はメソッドの先頭に移動され、Exceptionタイプの追加の宣言もメソッドの先頭にあります。
したがって、このコードは実際には何も実行しないので、コンパイラーがこのコードが何も実行せず、最適化できることを確認できるほど賢いのかどうか疑問に思いました。