-1

我正在使用委托来使用带有 2 个参数的调用方法。但它给出了空引用异常错误:

你调用的对象是空的。

无法转移控制以调用主页中的方法。谁能告诉我为什么会这样..?谢谢 ..

 public override event ResponseRecievedDelegate ResponseRecieved;

    if (reqName == REQUEST_NAME.abc)
        {
            IJsonParser parser = new JsonParser();
            Object resp = parser.GetData(responseString );

            ResponseRecieved.Invoke(reqName, resp); // unable to invoke this method giving null exception ..

        }

调用方法实现如下:

   private void OnResponseReceived(REQUEST_NAME requestName, Object response)
    {
        if (requestName == REQUEST_NAME.abc)
        {
           //------------
        }

        else if (requestName == REQUEST_NAME.def)
        { 
           //------------
        }
    }
4

1 回答 1

1

你需要检查

if(ResponseRecieved != null)

在调用事件之前

一般来说,在使用事件时,在使用它们之前我们需要检查是否为空。你可以在这里阅读这个主题

调用事件——一旦一个类声明了一个事件,它就可以将该事件视为指定委托类型的字段。如果没有客户端将委托连接到事件,则该字段将为空,否则它引用应在调用事件时调用的委托。因此,调用事件通常是通过首先检查 null 然后调用事件来完成的。

如果要OnResponseReceived调用该方法,则需要将其注册到事件中。你可以这样做:

ResponseRecieved += OnResponseReceived;

确保OnResponseReceived格式正确,并在调用事件之前执行此操作。

另一种方法就是调用方法......

于 2013-08-27T08:45:11.753 回答