无法解释的空指针引用,我责怪鬼魂

本文关键字:鬼魂 空指针 引用 无法解释 | 更新日期: 2023-09-27 18:35:33

我有以下代码:

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是使其失败的原因。紧接前面的行与字符串的内容相呼应,工作正常。

这是怎么回事?

无法解释的空指针引用,我责怪鬼魂

字符串串联会将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

如果值是空引用(在 Visual Basic 中没有任何内容),则没有任何内容 书面,没有抛出异常。

以下是

正在发生的事情:

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

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

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