无法在C#中使用Delegate的方法属性?

时间:2017-06-15 19:25:24

标签: c#

当我尝试在C#中使用Delegate的方法属性时,我收到此错误。

  

' myDelegate'不包含'方法'的定义和不   扩展方法'方法'接受第一个类型的参数   ' myDelegate'可以找到(你是否错过了使用指令或   装配参考?)

我真的不知道为什么会得到这个。我的程序非常简单,基于代表。下面给出了代码:

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

1 个答案:

答案 0 :(得分: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()实际上是调用该方法的。在此之前,委托只是指向您要调用的方法的指针。