【发布时间】:2016-02-09 08:09:30
【问题描述】:
我的 C# 项目有点乱,看到这段代码编译我很惊讶:
var a = new Action<string>(ref b => b = "hello");
反过来,如Action<string> a = ref b => b = "hello"; 将在“ref”处产生语法错误。
果然,将 sn-p 复制粘贴到 http://dotnetfiddle.net 会导致编译器错误:
A ref or out argument must be an assignable variable
我是否在编译器中遇到了错误? (我使用的是 VS 2015 和 C# 6。)
编辑:刚刚切换到 .NET Fiddle 上的 Roslyn 编译器,它仍然发出相同的错误。
【问题讨论】:
-
我在tryroslyn 尝试过,是的:它可以编译 - 行为与
ref不存在时的行为相同。看起来像一个错误(如果尚未完成,可能应该报告)。 -
@LucasTrzesniewski 确实如此。我已经向Roslyn GitHub repo 提交了一个关于此的问题。
-
奇怪。语法正确的 lambda
(ref string b) => b="hello"(注意括号和类型string)怎么样,可以使用该编译器将其转换为Action<string>吗?我现在无法访问 Visual C# 6 编译器。 -
...我用@LucasTrzesniewski 的链接中的 Try Roslyn 进行了尝试。
标签: c# compiler-errors delegates roslyn ref