2017-06-14 64 views
-2

如何使用函数作为另一个函数的参数,并将其分配给一个委托如何将一个函数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); 
    } 
} 
+3

或'myFunction(myDelegate @delegate)'。 – HimBromBeere

+1

@EdPlunkett https://dotnetfiddle.net/bNAElH – Toshi

+0

@Toshi Derp。谢谢。 –

回答

1

主要是静态的,所以另一种方法应该是静态的太在这种情况下。例如:

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); 
    } 
+0

好吧,它的工作。想。 – rachid

1

您可以使用您在类媒体链接提供的定义:

public void myFunction(myDelegate del) 
{ ... } 

Action-delegate introduces in .NET 3.5这是一个委托返回没有快捷方式(void):

public void myFunction(Action<double, string> del) 

在后一种情况下,您的方法中的deFunc也应该是Action<double, string>,因为您无法将其转换为myDelegate

请注意,delegate是一个保留关键字,因此您应该在方法签名的不同名称中命名参数,例如, del或只是func@delegate与前面的逐字@

+0

https://dotnetfiddle.net/bNAElH你确定'Action '会编译吗? – Toshi

相关问题