2017-06-15 57 views
0

當我嘗試在C#中使用Delegate的方法屬性時,出現此錯誤。無法在C#中使用委託的方法屬性?

「myDelegate」不包含關於「方法」的定義和沒有 擴展方法「方法」接受型 「myDelegate」的第一個參數可以找到(是否缺少using指令或程序 組件參考?)

我真的不知道爲什麼我得到這個。我的程序非常簡單,基於代表。在它下面的代碼爲給定:​​

public delegate void myDelegate(int x); 
public class Program 
{ 
    public void Main(string[] args) 
    { 
     X x = new X(); 
     myDelegate d = x.InstanceProgress; 
     Console.WriteLine(d.Method); 
    } 
} 

class X 
{ 
    public void InstanceProgress(int percent) => Console.WriteLine(percent); 
} 

我就在這行錯誤:

Console.WriteLine(d.Method); 

見下面這張圖片,雖然我得到正確的輸出,但我得到的錯誤。 我用圖像上的綠色箭頭標記了錯誤。

enter image description here

+5

就這麼你知道,它的「代表」不是「保護」(儘管一個保密聲音聽起來有點美味......) – BradleyDotNET

+0

你的目標是什麼框架? – SLaks

+0

解決方案DNX SDK版本:1.0.0-beta5 – yogihosting

回答

1

看OP的屏幕截圖。這看起來像一個Visual Studio錯誤。而且,由於它可以讓你建立這不是一個真正的錯誤。我在VS2015中沒有遇到這個錯誤。

我會清理解決方案並重新啓動visual studio。這應該清除它。

老:

你會想要做這樣的事情:

X x = new X(); 
myDeligate d = x.InstanceProgress; 
d.Invoke(5); 

// or as Rahul pointed out you can simply use 
d(5); 

的invoke()是實際調用該方法。在此之前,委託只是一個指向您要調用的方法的指針。

+3

爲什麼不只是'd(5)'? – Rahul

+0

這不是關於調用方法。 .Method是一個內置的屬性,提供了將被調用的方法的名稱和參數。 – yogihosting

+0

@yogihosting那麼你希望在你的原始代碼中發生什麼? – oerkelens