如何将函数 func 作为参数传递给另一个函数,然后将此参数分配给委托变量



如何将函数用作另一个函数的参数并将其分配给委托

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前面的逐字@

最新更新