[英]C# NullReferenceException while EventHandler
即使我在 Start Methode 中訂閱了事件,我也會收到 NullReferenceException。
我在哪里創建我的活動:
public EventHandler<CustomArgs> ClickEvent;
private void OnMouseDown()
{
Debug.Log("Clicked");
CustomArgs args = new CustomArgs();
args.Name = gebäude.ToString();
args.Level = Level;
args.MenuePosition = Menue;
ClickEvent?.Invoke(this, args);
}
我在哪里訂閱我的活動:
private void Start()
{
miene.ClickEvent += ClickEvent;
Debug.Log("Event Addedet");
}
private void ClickEvent(object sender, CustomArgs e)
{
//some useless stuff
}
當沒有人訂閱時,事件是null
。 幸運的是,現代 C# 使這變得簡單:
ClickEvent?.Invoke(this, args);
對於較舊的語言版本,您需要更加詳細:
var handler = ClickEvent;
if (handler != null) handler(this, args);
它們的意思完全相同。
作為一個小的優化,您可能希望推遲創建CustomArgs
object 直到您知道有人關心,但是:
ClickEvent?.Invoke(this, new CustomArgs {
Name = gebäude.ToString(),
Level = Level,
MenuePosition = Menue
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.