2012-03-12 43 views
1

您好,我有以下代碼。使用代表時顯示錯誤

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace myConsole 
{ 
    public delegate int showDelegate(); 
    public class addmultipleClass 
    { 
     public int addNumbers(int a, int b) 
     { 
      return (a + b); 
     } 
     public int multiplyNumbers(int a, int b) 
     { 
      return (a * b); 
     } 
    } 
    class Delegate 
    {  
     static void Main(string[] args) 
     { 
      addmultipleClass myObj = new addmultipleClass(); 
      showDelegate add = new showDelegate(myObj.addNumbers); 
     } 
    } 

} 

它顯示錯誤這樣No overload for 'addNumbers' matches delegate 'myConsole.showDelegate'

爲什麼它顯示此錯誤。我的代碼有什麼問題。引用addNumbers()方法不正確嗎?

爲什麼我應該在這裏使用委託。我可以通過使用類對象來實現此目的。 as myObj.addNumbers(10,20); 那麼代表需要什麼? 請幫幫我。 謝謝大家。

+2

修改showDelegate匹配的addNumbers的參數:'公共委託INT showDelegate(int a,int b);'除了返回類型之外,委託必須匹配參數的數量和類型。 – Jason 2012-03-12 06:48:00

+1

爲什麼不讓這個答案傑森?肯定會爲它投票 - 現在其他答案只會從你的評論中「借用」;) – Carsten 2012-03-12 06:49:59

+0

謝謝傑森先生。發佈它作爲答案.... :) – Searcher 2012-03-12 06:50:10

回答

4

修改showDelegate匹配的addNumbers的參數:

public delegate int showDelegate(int a, int b); 

代表要匹配除了你的返回類型參數的數量和類型。

您的問題的第二部分基本上是問:「爲什麼代表?」。對於這個問題的答案,我建議你看看其他堆棧溢出職位更詳細和準確的答案,作爲一個開始:

Delegates, Why? when & why to use delegates? The purpose of delegates

+0

@Jason ..你可以請再看看這個問題 – Searcher 2012-03-12 07:25:18

+0

@YSSS,更新。 – Jason 2012-03-12 07:37:00