如何将函数用作另一个函数的参数并将其分配给委托
public class myClass
{
public delegate void myDelegate(double x, string s);
//declaration of delegate
public void func(double x, string s)
{
dosomethings...
}
// what is the declaration of the argument 'Function declaration'
public void myFunction('Function declaration' function)
{
myDelegate deFunc;
deFunc = function;
}
}
static void Main(string[] args)
{
myFunction(func);
}
}
Main 是静态的,所以在这种情况下,另一个方法也应该是静态的。例如:
public delegate void myDelegate(double x, string s);
//declaration of delegate
public static void func(double x, string s)
{
//dosomethings...
}
// what is the declaration of the argument 'Function declaration'
public static void myFunction(myDelegate function)
{
myDelegate deFunc;
deFunc = function;
}
static void Main(string[] args)
{
myFunction(func);
}
您可以使用您在类中提供的 allready 定义:
public void myFunction(myDelegate del)
{ ... }
或者在 .NET 3.5 中引入Action
-delegate,它是委托不返回任何内容的快捷方式(void
(:
public void myFunction(Action<double, string> del)
在后一种情况下,方法中的deFunc
也应为Action<double, string>
类型,因为您不能将其转换为myDelegate
。
请注意,delegate
是一个保留关键字,因此您应该在方法签名中将参数命名为不同的名称,例如 del
或只是func
或@delegate
前面的逐字@