事件处理程序抛出对象引用错误
Event handler throwing object reference error
我正在尝试在我的 class 中创建一个事件并从 static void main 处理它 method.my 事件是由名为 checkAge() 的方法触发的。但是我遇到了这样的错误:
Error1-An object reference is required for the non-static field,
method, or property 'Event.Program.m_AgeChecker(int)
我想我已经完成了所有必须做的事情,而且我不知道问题出在哪里。
我的第一个代码class
class Mahmud
{
public Mahmud()
{
name = "mahmud";
age = 25;
}
private string name;
private int age;
public string Name
{
get{return name;}
set{name=value;}
}
public int Age
{
get { return age; }
set { age = value; }
}
public void checkAge()
{
AgeUpdate(age);
}
public delegate void AgeEventHandler(int mAge);
public event AgeEventHandler AgeUpdate;
}
第二个代码class
static void Main(string[] args)
{
Mahmud m = new Mahmud();
m.AgeUpdate += new Event.Mahmud.AgeEventHandler(m_AgeChecker(m.Age));
m.Age = 16;
m.checkAge();
m.Age = 27;
m.checkAge();
}
private void m_AgeChecker(int A)
{
if (A > 25)
{
Console.WriteLine("!");
}
else
{
Console.WriteLine("ok");
}
}
您似乎是从静态方法调用非静态方法。您需要将方法设为静态。
static void m_AgeChecker(int A)
{
if (A > 25)
{
Console.WriteLine("!");
}
else
{
Console.WriteLine("ok");
}
}
我正在尝试在我的 class 中创建一个事件并从 static void main 处理它 method.my 事件是由名为 checkAge() 的方法触发的。但是我遇到了这样的错误:
Error1-An object reference is required for the non-static field, method, or property 'Event.Program.m_AgeChecker(int)
我想我已经完成了所有必须做的事情,而且我不知道问题出在哪里。
我的第一个代码class
class Mahmud
{
public Mahmud()
{
name = "mahmud";
age = 25;
}
private string name;
private int age;
public string Name
{
get{return name;}
set{name=value;}
}
public int Age
{
get { return age; }
set { age = value; }
}
public void checkAge()
{
AgeUpdate(age);
}
public delegate void AgeEventHandler(int mAge);
public event AgeEventHandler AgeUpdate;
}
第二个代码class
static void Main(string[] args)
{
Mahmud m = new Mahmud();
m.AgeUpdate += new Event.Mahmud.AgeEventHandler(m_AgeChecker(m.Age));
m.Age = 16;
m.checkAge();
m.Age = 27;
m.checkAge();
}
private void m_AgeChecker(int A)
{
if (A > 25)
{
Console.WriteLine("!");
}
else
{
Console.WriteLine("ok");
}
}
您似乎是从静态方法调用非静态方法。您需要将方法设为静态。
static void m_AgeChecker(int A)
{
if (A > 25)
{
Console.WriteLine("!");
}
else
{
Console.WriteLine("ok");
}
}