为什么下面的代码编译没有错误?

时间:2015-11-08 16:36:31

标签: c# compiler-errors delegates roslyn ref

我正在搞乱我的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编译器,它仍然会发出同样的错误。

2 个答案:

答案 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