-1

我收到一条错误消息,我不知道如何修复它。这是我的原始代码:

private void SendMessage(Command cmd, EndPoint sendToEP)
{
    try
    {
        //Create the message to send.
        Data msgToSend = new Data();

        //msgToSend.strName = txtName.Text;   //Name of the user.
        msgToSend.cmdCommand = cmd;         //Message to send.
        msgToSend.vocoder = vocoder;        //Vocoder to be used.

        byte[] message = msgToSend.ToByte();

        //Send the message asynchronously.
        clientSocket.BeginSendTo(message, 0, message.Length, SocketFlags.None, sendToEP, new AsyncCallback(OnSend), null);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "UniProject-SendMessage ()", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

错误消息是(按钮按下事件)

你调用的对象是空的。

为什么我会收到此错误消息,我该如何解决?

4

1 回答 1

4

每次遇到这样的错误 (a NullReferenceException) 时,您的代码中都会有一些内容被设置为null. 您必须查看您的代码并确定:

  1. 错误发生在哪一行(以哪种方法)?
  2. 该行上的哪些变量是引用类型或可为空的值类型
    普通值类型(例如struct,或整数、浮点数、双精度数)不能是null
  3. 在这些变量中,哪些可能null
  4. 这些变量可能设置在null哪里?
    例如,方法参数、方法返回的值或as运算符的结果都可能导致变量为null.

如果这些都不是,您可能(尽管不太可能)有一个抛出此异常的方法。.NET 基类方法通常不会抛出这样的异常,如果你的代码确实抛出了它,你的堆栈跟踪应该带你到最深的方法和行。

于 2013-03-20T02:01:00.290 回答