avrei dovuto vedermela con il mio C# progetto un po 'e sono rimasto sorpreso di vedere questo codice viene compilato:Perché il seguente codice viene compilato senza errori?
var a = new Action<string>(ref b => b = "hello");
capovolgendolo il contrario, come Action<string> a = ref b => b = "hello";
darà un errore sintattico a 'ref'.
Abbastanza sicuro, copia-incollare il frammento in http://dotnetfiddle.net dà un errore di compilazione:
A ref or out argument must be an assignable variable
Avere ho incontrato un bug nel compilatore? (Sto usando VS 2015 e C# 6.)
EDIT: appena passato al compilatore Roslyn su .NET Fiddle, emette ancora lo stesso errore.
ho provato a [tryroslyn] (http://goo.gl/00ZyS0) e sì: compila - il comportamento è lo stesso come se 'ref' non c'era. Sembra un bug (che dovrebbe essere segnalato se non già fatto). –
@LucasTrzesniewski In effetti. Ho presentato un problema a [Roslyn GitHub repo] (https://github.com/dotnet/roslyn/issues/6646) a riguardo. –
Strano. Per quanto riguarda il lambda 'sintatticamente corretto (ref string b) => b =" ciao "' (nota la parentesi e il tipo 'stringa'), può essere convertito in' Azione 'con quel compilatore? Al momento non ho accesso al compilatore Visual C# 6. –