例如,DelegateHandler是我发送的事件Unity3D C#检查,如果事件是空
public class DelegateHandler : MonoBehaviour
{
public delegate void OnButtonClickDelegate();
public static OnButtonClickDelegate buttonClickDelegate;
public void OnButtonClick()
{
if(buttonClickDelegate!=null)
buttonClickDelegate();
}
}
有些线程提到我需要检查之前分配给事件一个变量,如果它为null,如:
OnButtonClickDelegate tempEvent = buttonClickDelegate;
if(tempEvent!=null)
tempEvent();
这是因为,在多线程程序中,我们需要检查是否有一些事件在检查它为空和调用事件之间取消订阅。 但Unity3D是单线程的,我们是否也需要这样做?我可以只写为
if(buttonClickDelegate!=null)
buttonClickDelegate();
但我仍然需要检查null,对吧? – ywj7931
我的第一个问题是回复*“某些线程提到我需要在检查它是否为空之前为事件分配一个变量”*。我的第二个是,如果你必须检查“null”是“是”,则回复。 – Programmer
只是为了阐明本答案中已经提到的内容,可以在Unity中执行通常的C#线程,并且如果使用多线程方式,那么您还需要检查null。 – BrokenBacon