3

我有以下代码:

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是导致它失败的原因。紧接在前面的行,它回显了字符串的内容,工作得很好。

这是怎么回事?

4

2 回答 2

9

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

在字符串连接操作中,C# 编译器将空字符串视为空字符串,但它不会转换原始空字符串的值。

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),则不写入任何内容,也不会引发异常。

于 2012-05-27T23:43:10.683 回答
1

这是发生的事情:

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

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

也就是说,以防其他人遇到此问题:确保您的变量已初始化。这与在这种情况下声明它一样重要。

于 2012-05-28T00:00:32.243 回答