活动。无法访问处理程序,书籍代码

时间:2013-10-26 13:13:06

标签: c# events event-handling handler

我正在从一本书中学习C#,而这段代码并没有编译。这里的问题在哪里?错误在这一行:evt.SomeEvent + = Handler;

以下是代码:

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

delegate void MyEventHandler();

class MyEvent
{
    public event MyEventHandler SomeEvent;

    public void OnSomeEvent()
    {
        if (SomeEvent != null)
            SomeEvent();
    }
}

class EventDemo
{
    static void Handler()
    {
        Console.WriteLine("Event occurred");
    }
}

class Program
{
    static void Main(string[] args)
    {
        MyEvent evt = new MyEvent();

        evt.SomeEvent += Handler;  **// ERROR ON THIS LINE: HANDLER DOESN'T EXIST**

        evt.OnSomeEvent();
    }
}

这对我来说是一个缓慢的学习,因为我觉得编写自己的代码很困难,我理解并且现在可以阅读大部分代码但是,我认为编写自己的程序是我最大的挑战。

1 个答案:

答案 0 :(得分:0)

您必须在Handler中将EventDemo声明为公开,并在Program

中正确定义
class EventDemo
{
    public static void Handler()
    {
        Console.WriteLine("Event occurred");
    }
}

class Program
{
    static void Main(string[] args)
    {
        MyEvent evt = new MyEvent();

        evt.SomeEvent += EventDemo.Handler;

        evt.OnSomeEvent();
    }
}