例如,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