簡體   English   中英

LINQPad在有效代碼上引發NullReferenceException

[英]LINQPad throws NullReferenceException on valid code

我正在閱讀有關C#事件和委托的信息 ,我想將以下代碼復制並粘貼到LINQPad中並運行它:

class Test
{
    public event EventHandler MyEvent
    {
        add
        {
            Console.WriteLine ("add operation");
        }

        remove
        {
            Console.WriteLine ("remove operation");
        }
    }

    static void Main()
    {
        Test t = new Test();

        t.MyEvent += new EventHandler (t.DoNothing);
        t.MyEvent -= null;
    }

    void DoNothing (object sender, EventArgs e)
    {
    }
}

我在查詢屬性中導入System名稱空間。

我不知道為什么LINQPad拋出NullReferenceException

Message Object reference not set to an instance of an object.
Data    Data
InnerException  (null)
TargetSite  TargetSite
StackTrace     at LINQPad.ExecutionModel.ClrQueryRunner.Run()
   at LINQPad.ExecutionModel.Server.RunQuery(QueryRunner runner)
HelpLink    null
Source  LINQPad
HResult -2147467261

如果我在Visual Studio中創建一個項目,則相同的代碼可以很好地編譯,這是我想要避免的。

您需要像這樣將main方法移出類:

void Main()
{
    Test t = new Test();

    t.MyEvent += new EventHandler (t.DoNothing);
    t.MyEvent -= null;
}

class Test
{
    public event EventHandler MyEvent
    {
        add
        {
            Console.WriteLine ("add operation");
        }

        remove
        {
            Console.WriteLine ("remove operation");
        }
    }

    public void DoNothing (object sender, EventArgs e)
    {
    }
}

這是LinqPad的限制。

干杯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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