为什么下面的代码编译没有错误?
Why does the following code compile without errors?
我正在处理我的 C# 项目,我很惊讶地看到这段代码可以编译:
var a = new Action<string>(ref b => b = "hello");
反过来,如 Action<string> a = ref b => b = "hello";
将在 'ref' 处给出语法错误。
果然,将代码段复制粘贴到 http://dotnetfiddle.net 中会出现编译器错误:
A ref or out argument must be an assignable variable
我遇到编译器错误了吗? (我使用的是 VS 2015 和 C# 6。)
编辑: 刚切换到 .NET 上的 Roslyn 编译器 Fiddle,它仍然发出相同的错误。
这听起来像是 VS2015 中的编译器错误。这被归档为 https://github.com/dotnet/roslyn/issues/6646
我认为第一个Action
var a = new Action(ref b => b = "hello");
ref
为完整动作参考b=>b = "hello"
而在第二个
Action a = ref b => b = "hello";
ref
是参考 b => b = "hello"
中 b
的参考
检查以下内容
fiddle
我正在处理我的 C# 项目,我很惊讶地看到这段代码可以编译:
var a = new Action<string>(ref b => b = "hello");
反过来,如 Action<string> a = ref b => b = "hello";
将在 'ref' 处给出语法错误。
果然,将代码段复制粘贴到 http://dotnetfiddle.net 中会出现编译器错误:
A ref or out argument must be an assignable variable
我遇到编译器错误了吗? (我使用的是 VS 2015 和 C# 6。)
编辑: 刚切换到 .NET 上的 Roslyn 编译器 Fiddle,它仍然发出相同的错误。
这听起来像是 VS2015 中的编译器错误。这被归档为 https://github.com/dotnet/roslyn/issues/6646
我认为第一个Action
var a = new Action(ref b => b = "hello");
ref
为完整动作参考b=>b = "hello"
而在第二个
Action a = ref b => b = "hello";
ref
是参考 b => b = "hello"
b
的参考
检查以下内容 fiddle