gpt4 book ai didi

c# - 委托(delegate)事件问题

转载 作者:行者123 更新时间:2023-11-30 14:01:05 25 4
gpt4 key购买 nike

我是 C# 开发的新手。我只是想研究委托(delegate)功能。根据我阅读的有关委托(delegate)的文章和笔记,我尝试根据从这些笔记和文章中理解的内容编写示例代码来实现委托(delegate)。

但是我在运行示例时遇到错误

“对象引用未设置到对象的实例。”

这里有什么问题?或者我是否以正确的方式实现了委托(delegate)?或者我关于委托(delegate)的概念是错误的吗?..

请帮忙。提前致谢。

我在下面发布了我的代码。

default.aspx.cs

public partial class _Default : System.Web.UI.Page
{
TestClass myObject = new TestClass();

protected void Page_Load(object sender, EventArgs e)
{
myObject.MyDelegateEvent += new TestClass.MyDelegate(myObject_MyDelegateEvent);
}

void myObject_MyDelegateEvent(object sender, EventArgs e)
{
Console.WriteLine("Delegate event called");
}
}

测试类

public class TestClass
{
public delegate void MyDelegate(object sender, EventArgs e);

public event MyDelegate MyDelegateEvent;

public TestClass()
{
MyDelegateEvent(this, null); // Here getting error "Object reference not set to an instance of an object."

}

}

最佳答案

您正在尝试的是:在构造函数本身中引发事件,即在您的事件没有订阅者时,因此 MyDelegateEvent 为空。

最好的选择是在引发事件之前进行空检查

//Check for not null
if(MyDelegateEvent != null)
{
MyDelegateEvent(this, null);
}

关于c# - 委托(delegate)事件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9033517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com