Cambios importantes de Visual C# en Visual Studio 2012
La tabla siguiente se indican los cambios en Visual c# en Visual Studio 2012 que podría cualquiera evitar una aplicación creada en Visual c# en Visual Studio 2010 de la compilación o cambiar el comportamiento en tiempo de ejecución de una aplicación.
Categoría |
Problema |
Descripción |
---|---|---|
Expresiones lambda |
Puede utilizar la variable de iteración de una instrucción de foreach en una expresión lambda que está incluido en el cuerpo del bucle. |
El uso de una variable de iteración de foreach en una expresión lambda anidada no presenta más resultados inesperados.El ejemplo siguiente utiliza word variable en una expresión lambda.
|
Expresiones LINQ |
Puede utilizar la variable de iteración de una instrucción de foreach en una expresión LINQ incluido en el cuerpo del bucle. |
El uso de una variable de iteración de foreach en una expresión LINQ no presenta más resultados inesperados.El ejemplo siguiente utiliza number variable en una consulta LINQ.
|
Argumentos con nombre |
Los efectos secundarios de argumentos con nombre y tabulares en una llamada al método aparecen ahora de izquierda a derecha en la lista de argumentos. |
Los efectos secundarios de los argumentos con nombre y tabular que se combinan en una llamada al método ahora se generan de izquierda a derecha en la lista de argumentos de la instrucción de llamada.En el ejemplo siguiente, TestMethod se realiza mediante una combinación de argumentos con nombre y tabulares en diferentes pedidos.
|
Resolución de sobrecarga |
La resolución de sobrecarga se ha mejorado para llamadas que utilizan argumentos con nombre a los métodos de acceso que contienen los parámetros de params. |
Cuando se encuentra más de un candidato de resolución, la resolución de sobrecarga prefiere la mayoría de tipo concreto para los argumentos con nombre.Se consideran los parámetros para los que los argumentos no son necesarios ni se proporcionan en la llamada cuando coincide con el tipo de candidatos de sobrecarga son igualmente buenas. En el ejemplo siguiente, string es mejor tipo que object para p2.Por consiguiente, la versión de ExampleMethod en la que se define el parámetro p2 como una cadena debe ser elegida, aunque tiene un parámetro de params de otros fabricantes.
|
Resolución de sobrecarga |
La resolución de sobrecarga se mejora para las llamadas donde el algoritmo debe elegir entre un parámetro de Func<object> y un parámetro de Func que tiene otro parámetro de tipo (por ej., string o int?) para un argumento de Func<dynamic>. |
En el ejemplo siguiente, la llamada a CandidateMethod que envía un argumento de Func<dynamic> tiene dos candidatos de resolución.El parámetro correspondiente en uno de los candidatos es Func<object>, y el parámetro correspondiente en el otro es Func<string>. El candidato de sobrecarga que tiene un parámetro de Func<object> debe ser elegido porque object y dynamic se consideran equivalentes.Por consiguiente, la conversión de identidad existe no sólo entre dynamic y object sino también entre los tipos construidos Func<dynamic> y Func<object>.
|
Vea también
Referencia
Expresiones lambda (Guía de programación de C#)
Conceptos
Argumentos opcionales y con nombre (Guía de programación de C#)
Otros recursos
¿Cuándo una corrección el no interrumpir de lenguaje está colocando?