所有Func委托都返回一个值。 什么是可以与返回void的方法一起使用的.NET委托?
#1楼
有时您会想要为事件处理编写委托,在这种情况下,您可以利用System.EvenHandler ,除了应该从EventArgs派生的第二个参数之外, System.EvenHandler隐式接受object类型的参数。 EventHandlers将返回void
我个人发现这在测试过程中有用,可以在函数体中创建一次性回调。
#2楼
试试这个例子吧
using System;
public class Program
{
private Func FunctionPTR = null;
private Func FunctionPTR1 = null;
private Action ProcedurePTR = null;
private string Display(string message)
{
Console.WriteLine(message);
return null;
}
private string Display(string message1,string message2)
{
Console.WriteLine(message1);
Console.WriteLine(message2);
return null;
}
public void ObjectProcess(object param)
{
if (param == null)
{
throw new ArgumentNullException("Parameter is null or missing");
}
else
{
Console.WriteLine("Object is valid");
}
}
public void Main(string[] args)
{
FunctionPTR = Display;
FunctionPTR1= Display;
ProcedurePTR = ObjectProcess;
FunctionPTR("Welcome to function pointer sample.");
FunctionPTR1("Welcome","This is function pointer sample");
ProcedurePTR(new object());
}
}
#3楼
...没有参数,并且有一个void返回类型?
如果您正在为System.Windows.Forms编写,您还可以使用:
public delegate void MethodInvoker()
#4楼
尝试System.Func和System.Action
#5楼
...没有参数,并且有一个void返回类型?
我相信Action是解决这个问题的方法。