有一个委托属性:
public Action<WorkflowApplicationCompletedEventArgs> Completed { get; set; }
到目前为止,在我的程序中,我有一个变量,它是此类的一个实例
我想定义一个F#函数来设置:
let f (e: WorkflowApplicationCompletedEventArgs) =
// body
myInst.Completed <- f
但这会产生错误:
错误102此表达式应具有类型 行动,但这里有类型 'a - &gt;单元
如何完成函数“f”以满足编译器的需要?
答案 0 :(得分:6)
如果将匿名函数System.Action<...>
传递给期望System.Func<...>
或let f = System.Action<WorkflowApplicationCompletedEventArgs>(fun e ->
// body
)
myInst.Completed <- f
// Another solution:
let f (e: WorkflowApplicationCompletedEventArgs) =
// body
myInst.Completed <- System.Action<_>(f)
的方法或构造函数,则会自动转换;在任何其他情况下,您需要像@Funk指示的那样明确地转换它。
if (filein != NULL) // Checks if the file was loaded.
{
while (fscanf(filein, "%d", &a) > 0)
{
sum += a;
}
printf("Sum = %d\n", sum); // prints to command window.
fclose(filein);
}