编译器错误 CS1688
无法将不含参数列表的匿名方法块转换为委托类型“delegate”,原因是该方法块具有一个或多个 out 参数
大多数情况下,编译器允许省略匿名方法块中的参数。 如果匿名方法块不具有参数列表,而委托具有 out
参数,则将出现此错误。 由于编译器需要忽略 out
参数的存在(而这不太可能是正确行为),因此它不允许这种情况。
以下代码生成错误 CS1688。
// CS1688.cs
using System;
delegate void OutParam(out int i);
class ErrorCS1676
{
static void Main()
{
OutParam o;
o = delegate // CS1688
// Try this instead:
// o = delegate(out int i)
{
Console.WriteLine("");
};
}
}