无法解释的空指针引用,我责怪鬼魂
本文关键字:鬼魂 空指针 引用 无法解释 | 更新日期: 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 中没有任何内容),则没有任何内容 书面,没有抛出异常。
以下是
正在发生的事情:
我得到了如上所述的错误。当我注释掉长度测量时,我输入了一些东西,看看文本是否也会导致错误。当它没有时,我把它放回去并尝试其他实验。
我在测试时一直没有输入任何内容,这反过来意味着变量已声明但未初始化。我已经尝试解决此问题两个小时了。
也就是说,如果其他人遇到此问题:确保您的变量已初始化。这与在这种情况下声明它一样重要。