none
问题不知道怎么说,暂时就说 Action 用法 RRS feed

  • 问题

  • 比如定义方法 v
    void GetString_1(string s,Action<string> exec)
    {
       exec s;
    }
    
    这种方法和
    
    string GetString_2(string s)
    {
       return s;
    }
    
    这种 有什么区别
    
    
    调用
    
    void ButtonClick(object sender,MouseButtonEventArgs e)
    {
       GetString_1("Hello",(s)=>
         {
             MessageBox.Show(s);
         });
    
        
        MessageBox.Show(GetString_2("Hello"));
    }
    
    
    求教两种语法的区别
    
    oid GetString
    Hero
    • 已移动 Jie BaoModerator 2011年6月8日 9:15 (发件人:Windows Presentation Foundation)
    2011年6月8日 1:03

答案

  • 前者你提供出来的是一个委托参数,你可以自己设计具体执行函数的逻辑,然后把这个函数当作参数传到GetString_1中。后者是直接调用一个已经设计好的函数。

    对于前者,我们可以更灵活的扩展,比如Linq中的很多方法,都是接受委托参数的,例如 Each() , 我们就可以用我们自己的逻辑来对每一个查询出来的元素进行处理,

     

    你的例子对于用户可能会这么去设计:

      GetString_1("Hello",(s)=>
       {
        if (s.Length > 10) MessageBox.Show("Too long!");
        MessageBox.Show(s);
       });
    

     

    Sincerely,

     


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年6月8日 9:15
    版主