2017-06-15 168 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