Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何将调用传递给函数?_.net_Visual Studio 2010_C# 4.0 - Fatal编程技术网

.net 如何将调用传递给函数?

.net 如何将调用传递给函数?,.net,visual-studio-2010,c#-4.0,.net,Visual Studio 2010,C# 4.0,我需要将一个函数传递到另一个函数并在那里调用它。我使用以下代码: namespace DelegateTest { class Program { public class MySampleClass { public void click(string param) { System.Console.WriteLine(param + " click!");

我需要将一个函数传递到另一个函数并在那里调用它。我使用以下代码:

namespace DelegateTest
{
    class Program
    {
        public class MySampleClass
        {
            public void click(string param)
            {
                System.Console.WriteLine(param + " click!");
            }

            public void flick(string param)
            {
                System.Console.WriteLine(param + " flick!");
            }
        }

        public static delegate void EventToWait(string param);

        public static void waitFor(EventToWait myEvent, string param)
        {
            // here is a **very** complex loop, which i would like wipe from main() function
            myEvent(param);
        }

        public static void Main(string[] args)
        {
            MySampleClass sc = new MySampleClass();
            EventToWait ev1 = sc.click;
            EventToWait ev2 = sc.flick;

            waitFor(ev1, "Button_1");
            waitFor(ev2, "Button_2");

            System.Console.ReadKey();
        }
    }
}

但是我的编译器说,委托不能是静态的。如何处理此问题?

好吧,只需删除
static
关键字:

public delegate void EventToWait(string param);

那么,只需删除
static
关键字:

public delegate void EventToWait(string param);

或者,您可以声明:

public static void waitFor(Action<string> myEvent, string param)

这避免了声明委托的需要。

或者,您可以声明:

public static void waitFor(Action<string> myEvent, string param)
这避免了声明委托的需要