【问题标题】:How can I pass call to a function?如何将调用传递给函数?
【发布时间】:2011-12-28 16:54:13
【问题描述】:

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

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();
        }
    }
}

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

【问题讨论】:

    标签: .net visual-studio-2010 c#-4.0


    【解决方案1】:

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

    public delegate void EventToWait(string param);
    

    【讨论】:

      【解决方案2】:

      您也可以声明:

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

      在你的主要通话中:

      public static void Main(string[] args)
              {
                  MySampleClass sc = new MySampleClass();
                  EventToWait ev1 = sc.click;
                  EventToWait ev2 = sc.flick;
      
                  waitFor((k)=>sc.click(k), "Button_1");
                  waitFor((k)=>sc.flick(k), "Button_2");
      
                  System.Console.ReadKey();
              }
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-07
        • 1970-01-01
        • 1970-01-01
        • 2022-11-18
        • 2013-06-06
        • 1970-01-01
        相关资源
        最近更新 更多