为什么委托中的null异常

时间:2014-05-11 13:08:12

标签: c# delegates

我是新代表和事件,所以我尝试下面的代码 但我得到了NullReference异常

public class Class1
{
    public delegate void load();

    static void Man( )
    {
        Console.WriteLine("Man");

    }

    static void Dog()
    {
        Console.WriteLine("Dog");

    }

    load sas = new load(Man);


    public event load even;

    void Display()
    {
        even();
    }

    static void Main()
    {
        Class1 ss = new Class1();
        ss.Display();

    }
}

我犯了错误.... 感谢....

1 个答案:

答案 0 :(得分:0)

在开始调用事件变量之前,还需要分配事件变量。

尚未分配名为event的{​​{1}}变量,因此它仍为even。您需要将其分配到某个位置 - 例如,在null方法中:

Main

另一方面,您的static void Main() { Class1 ss = new Class1(); ss.even += Man; ss.Display(); } 变量已分配,但仍未使用。您可以从程序中删除其声明。

Here is a demo of your corrected programs running

生产所需的事件处理代码需要sas - 在拨打电话之前检查事件:

null