Ultime modifiche di Visual C# in Visual Studio 2012
Nella tabella seguente sono elencate le modifiche in Visual c in Visual Studio 2012 che potrebbe o impedire un'applicazione creata in Visual c in Visual Studio 2010 dalla compilazione o modificare il comportamento di tale applicazione.
Category |
Problema |
Descrizione |
---|---|---|
Espressioni lambda |
È possibile utilizzare la variabile di iterazione di un'istruzione di foreach in un'espressione lambda contenuta nel corpo del ciclo. |
L'utilizzo di una variabile di iterazione di foreach in un'espressione lambda annidata più non forniscono risultati imprevisti.Nell'esempio riportato word variabile in un'espressione lambda.
|
Espressioni LINQ |
È possibile utilizzare la variabile di iterazione di un'istruzione di foreach in un'espressione LINQ contenuta nel corpo del ciclo. |
L'utilizzo di una variabile di iterazione di foreach in un'espressione LINQ non fornisce più risultati imprevisti.Nell'esempio riportato number variabile in una query LINQ.
|
Argomenti predefiniti |
Gli effetti collaterali gli argomenti denominati e posizionali in una chiamata al metodo ora si verificano da sinistra a destra nell'elenco di argomenti. |
Gli effetti collaterali gli argomenti denominati e posizionali che vengono combinati in una chiamata al metodo sono ora prodotti da sinistra a destra nell'elenco di argomenti di chiamata dell'istruzione.Nell'esempio seguente, TestMethod viene chiamato utilizzando una combinazione di argomenti denominati e posizionali gli ordini diversi.
|
Risoluzione di l |
La risoluzione dell'overload è stata migliorata per le chiamate che utilizzano argomenti predefiniti ai metodi di accesso che contengono i parametri di params. |
Quando più di un candidato di risoluzione viene trovato, la risoluzione di l preferisce la corrispondenza del tipo specifico di argomenti predefiniti.Gli argomenti di parametri per il quale non sono necessari o fornita nella chiamata sono considerati solo quando le corrispondenze di tipo nei candidati dell'overload presentano lo stesso livello di efficienza. Nell'esempio seguente, string è un tipo migliore che object per p2.Pertanto, la versione di ExampleMethod in cui il parametro p2 viene definito come una stringa deve essere scelta, anche se presenta un parametro di params di terzo.
|
Risoluzione di l |
La risoluzione dell'overload è migliorata per le chiamate in cui l'algoritmo deve stabilire tra un parametro di Func<object> e un parametro di Func con un parametro di tipo diverso, ad esempio string o int?) per un argomento di Func<dynamic>. |
Nell'esempio seguente, la chiamata a CandidateMethod che invia un argomento di Func<dynamic> ha due candidati di risoluzione.Il parametro corrispondente in uno dei candidati è Func<object>e il parametro corrispondente nell'altro è Func<string>. Il candidato di overload che dispone di un parametro di Func<object> deve essere sceltoe perché object e dynamic vengono considerati equivalenti.Di conseguenza, una conversione di identità non esiste solo tra dynamic e object ma anche tra i tipi costruiti Func<dynamic> e Func<object>.
|
Vedere anche
Riferimenti
Espressioni lambda (Guida per programmatori C#)
Concetti
Argomenti denominati e facoltativi (Guida per programmatori C#)
Altre risorse
Guida introduttiva a Visual C#
Quando una non l'interruzione di linguaggio di interrompendosi?