Este método estático de la clase string en C# 2 es sumamente útil, ya que ahorra el trabajo de la verificación de valores nulos al querer saber si un string está vacío. Sin embargo, hay un bug localizado muy específico:

En una aplicación de consola, compilada en modo release, ejecutándose en un ambiente producción (fuera del IDE de Visual Studio) y usada dentro de algún ciclo como for o while, se genera la siguiente excepción del JIT:

Null Exemption caused by JIt optimisation around String.IsNullOrEmpty

Así, un código tan simple como este dejará de funcionar:

C#:
  1. for (int j = 0; j <10; j++)
  2. 11   {
  3. 12     if (String.IsNullOrEmpty(x))
  4. 13     {
  5. 14       //TODO:
  6. 15     }
  7. 16   }

Todo el detalle específico del bug incluyendo workarounds disponibles en:

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=113102&wa=wsignin1.0

Si bien es un caso muy específico, siempre es bueno saberlo para que no pasar horas buscando algún error cometido por nosotros mismos.

Via