2016-03-15 27 views
3

Iam不確定是否有人問同樣的問題。但我無法找到任何與我的疑問相關的來源。代表們的需求是什麼?

代表們在實時編程中需要什麼?有很多步驟需要完成。

public delegate void SimpleDelegate(); 
    class TestDelegate 
    { 
     public static void MyFunc() 
     { 
      Console.WriteLine("I was called by delegate ..."); 
     } 
     public static void Main() 
     { 
      // Instantiation 
      SimpleDelegate simpleDelegate = new SimpleDelegate(MyFunc); 

      // Invocation 
      simpleDelegate(); 
     } 
    } 

如果再可用性是一個主要的原因(因爲不需要創建實例)使用的委託,這可以通過其他方式也實現了。或者這是使用委託的唯一優勢?我知道匿名方法比委託做的更好。但是,除了簡化步驟外,它是否提供比代表更多的東西?以及當結構如下所示時我如何重用匿名方法。

List<int> values = new List<int>() { 1, 1, 1, 2, 3 }; 
List<int> res = values.FindAll(delegate(int element) 
    { 
     if (element > 10) 
     { 
     throw new ArgumentException("element"); 
     } 
     if (element == 8) 
     { 
     throw new ArgumentException("element"); 
     } 
     return element > 1; 
    }); 

我很困惑。請擺脫這一點。

+1

代表和匿名方法之間的區別與水果和蘋果之間的區別。 –

+0

好的。但我想知道需要而不是差異。 –

+0

那麼有不同類型的代表和lambda表達式是使代表更強大的實現的關鍵核心之一。我建議你檢查一下lambda。 – Aizen

回答

1

代表爲方法提供完全類型且安全的引用。現在使用通用事件處理程序Action,Func和lambda,我個人不記得上次我明確創建了一個委託。

它們仍然在引擎蓋下的所有地方使用,但它們在日常編程中的歷史非常悠久。代表存在於版本1中。蘭姆達斯和其他選項很晚纔出現。