
Buenas
estaba comentando con unos compañeros la utilización de String.IsNullOrEmpty en las aplicaciones para mejorar la performance de las mismas (sumado al uso de StringBuilder, etc.); cuando mi proyecto de ejemplo de Consola de C# se estrelló estrepitosamente contra la memoria de Windows.
Después de buscar un rato la solución (y pensando que el error era mío), me encuentro con este bug de C# (yes C# no VB):
Null Exemption caused by JIt optimisation around String.IsNullOrEmpty
Lo resumo en pocas palabras, si dentro de una aplicación de Consola utilizamos la función String.IsNullOrEmpty con un valor nulo, el exe compilado de la aplicación en modo Release disparará un error cuando lo ejecutemos. Pueden probar con el código de ejemplo del bug
1 static void Main(string[] args)
2 {
3 Console.WriteLine("starting");
4 test(null);
5 Console.WriteLine("finished");
6 Console.ReadLine();
7 }
8 static void test(string x)
9 {
10 for (int j = 0; j < 10; j++)
11 {
12 if (String.IsNullOrEmpty(x))
13 {
14 //TODO:
15 }
16 }
17 }
Lo interesante del tema, al margen de la solución del error para Microsoft Visual Studio 2008, es la capacidad que tenemos para reportar errores sobre Visual Studio, .Net Fwk, etc.; y como el equipo de desarrollo de Microsoft está al tanto de los mismos.
Pero no solo errores podemos reportar en la sección de Feedback del Connect de Visual Studio, también podremos realizar sugerencias para mejorar funcionalidades existentes de Visual Studio o para agregar nuevas.
Además, si estamos anotados en los programas de Beta Tester de algún producto y participas activamente con reportes de errores y sugerencias, algún detallito tendrá la gente de Visual Studio contigo ... (aunque no me sirve de mucho tener varios juegos para la XBox 360 en Seattle jejeje)
Pues bien, a no desarrollar en C# tener cuidado con la depuración de errores y mucho más en aplicaciones de consola C# con String.IsNullOrEmpty en las mismas :D
Saludos desde Lisboa
El Bruno