我正在从一本书中学习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();
}
}
这对我来说是一个缓慢的学习,因为我觉得编写自己的代码很困难,我理解并且现在可以阅读大部分代码但是,我认为编写自己的程序是我最大的挑战。
答案 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();
}
}