我正在搞乱我的C#项目,我很惊讶看到这段代码编译:
var a = new Action<string>(ref b => b = "hello");
反过来翻转它,例如Action<string> a = ref b => b = "hello";
会在&#39; ref&#39;中给出语法错误。
果然,将代码段复制粘贴到http://dotnetfiddle.net会产生编译错误:
A ref or out argument must be an assignable variable
我在编译器中遇到过错误吗? (我使用VS 2015和C#6。)
编辑:刚刚在.NET Fiddle上切换到Roslyn编译器,它仍然会发出同样的错误。
答案 0 :(得分:6)
这听起来像VS2015中的编译器错误。这是以https://github.com/dotnet/roslyn/issues/6646
提交的答案 1 :(得分:0)
我认为首先是Action
var a = new Action(ref b =&gt; b =&#34; hello&#34;);
ref
是完整操作b=>b = "hello"
而在第二个
行动a = ref b =&gt; b =&#34;你好&#34 ;;
ref
是参考{b}&gt;中的b
b =&#34;你好&#34;
检查以下内容 fiddle