簡體   English   中英

C# EventHandler 時出現 NullReferenceException

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM