原因不明的空指针引用,我指责鬼

时间:2012-05-27 23:39:58

标签: c# mono monomac

我有以下代码:

public void DrawInput(string ChatCurrent){

        int uCursorTop;
        int uCursorLeft;
        uCursorLeft = Console.CursorLeft;
        uCursorTop = Console.CursorTop;
        Console.SetCursorPosition(0, uCursorTop);
        Console.Write("> "+ChatCurrent+" ");
        Console.SetCursorPosition(ChatCurrent.Length, uCursorTop);
    }

除最后一行外,它的行为正常。最后一行抛出System.NullReferenceException: Object reference not set to an instance of an object。奇怪的是?具体来说,访问ChatCurrent.Length是导致失败的原因。紧接着字符串内容的前一行,工作得很好。

发生了什么事?

2 个答案:

答案 0 :(得分:9)

字符串连接会将null值视为空字符串

  

在字符串连接操作中,C#编译器处理null   字符串与空字符串相同,但不转换该值   原始的空字符串。

http://msdn.microsoft.com/en-us/library/ms228504.aspx

但即使你将null直接传递给Console.Write,它也不会抛出异常,它只会写不出来。

http://msdn.microsoft.com/en-us/library/zcwe8sfx%28v=vs.80%29.aspx

  

如果value是空引用(在Visual Basic中为Nothing),则不存在任何内容   写的,没有异常被抛出。

答案 1 :(得分:1)

以下是发生的事情:

我得到了如上所述的错误。当我注释掉长度测量时,我输入了东西以查看文本是否也会导致错误。如果没有,我把它放回去尝试其他实验。

我在测试时始终没有输入任何内容,这反过来意味着变量已声明但未初始化。我一直试图解决这个问题两个小时。

即使其他人遇到此问题:确保您的变量已初始化。与在此上下文中声明变量一样重要。