我有以下代码:
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
是导致失败的原因。紧接着字符串内容的前一行,工作得很好。
发生了什么事?
答案 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)
以下是发生的事情:
我得到了如上所述的错误。当我注释掉长度测量时,我输入了东西以查看文本是否也会导致错误。如果没有,我把它放回去尝试其他实验。
我在测试时始终没有输入任何内容,这反过来意味着变量已声明但未初始化。我一直试图解决这个问题两个小时。
即使其他人遇到此问题:确保您的变量已初始化。与在此上下文中声明变量一样重要。