使用英语阅读

通过


编译器错误 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("");  
        };  
    }  
}