byłem bawić z moim projekcie C# trochę i byłem zaskoczony, aby zobaczyć ten kod kompiluje:Dlaczego poniższy kod jest kompilowany bez błędów?
var a = new Action<string>(ref b => b = "hello");
odwrócenie na odwrót, jak Action<string> a = ref b => b = "hello";
da syntaktyczną błąd w „ref”.
Rzeczywiście, kopiowania wklejenie fragmentu kodu do http://dotnetfiddle.net daje błąd kompilatora:
A ref or out argument must be an assignable variable
ja napotkał błąd w kompilator? (Używam VS 2015 i C# 6)
EDIT: Wystarczy włączyć do kompilatora Roslyn na .NET Fiddle, to nadal emituje ten sam błąd.
Próbowałem go na [tryroslyn] (http://goo.gl/00ZyS0) i tak: kompiluje - zachowanie jest takie samo, jak gdyby 'ref' nie było. Wygląda jak błąd (który powinien zostać zgłoszony, jeśli jeszcze nie został zrobiony). –
@LucasTrzesniewski Rzeczywiście. Przesłałem problem do [Roslyn GitHub repo] (https://github.com/dotnet/roslyn/issues/6646) na ten temat. –
Dziwne. A co z poprawnym składniowo lambda '(ref string b) => b =" hello "' (zauważ nawias i typ 'string'), czy można go przekonwertować na' Action 'z tym kompilatorem? Nie mam teraz dostępu do kompilatora Visual C# 6. –