c# - 事件处理程序抛出对象引用错误

标签 c# events event-handling

我正在尝试在我的类中创建一个事件并从 static void main 方法处理它。我的事件是由名为 checkAge() 的方法触发的。但是我遇到了如下错误:

Error1-An object reference is required for the non-static field, method, or property 'Event.Program.m_AgeChecker(int)

我想我做了所有我必须做的事情,而且我不知道问题是什么。

我的第一个类的代码

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;        
}

二级代码

    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");
    }
}   

关于c# - 事件处理程序抛出对象引用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32326516/

相关文章:

Java - 在数据接收时向另一个线程触发事件

C# WebBrowser 控件 - 使用 InvokeMember ("Click"提交表单不工作)

c# - Winform MsChart 辅助轴和带状线

php - Symfony2 - 有没有办法 Hook 事件以供用户确认?

c - 列出 ETW 提供程序的事件类

Android 数据绑定(bind) - 无法调用点击处理程序

android - 如何捕捉 android 的 onsize 事件(或等于)

c# - Kendo Grid 内联编辑日期格式问题

c# - 无法根据 Windows 商店应用程序的分辨率更改 UI 控件的尺寸和文本 block 的字体大小

JavaScript : Display password for a short time