C#编程中的一个问题,NullReferenceException

来源:百度知道 编辑:UC知道 时间:2024/05/13 06:45:55
str.Append(",你的体重:");
//str.Append(listBox1.SelectedItem.ToString());
String mystr1 = listBox1.SelectedItem.ToString();
if (mystr1 == "")
str.Append(",没选!");
else
str.Append(mystr1);

这是我代码中的一段``我创建了一个windows应用程序,在里面添加了一些控件`比如说可以加载人的年龄的`上面就是加载人的年龄的一段代码~如果在运行的时候我在窗体里面选择了年龄的话``就不会报错`如果说没选的话,他就会报一个错``说喊我创建NEW的事例对象,第二就是喊我判断mystr1是否为空!~大体上是这个意思~郁闷了一早上了`请高手帮忙哈!~~~

这是系统提示的错误:
试图在代码中引用不存在的对象时,会发生 NullReferenceException。例如,您可能试图在未先使用 New 关键字的情况下使用对象,或试图使用值设置为 null(在 Visual Basic 中为 Nothing)的对象。

你说了一堆,有点没看懂,哈哈。
listBox1.SelectedItem.ToString(); 这句有问题。如果你没有选择listBox1.SelectedItem就是null,它不可能使用tostring()方法。
如果你想判断选没选可以先判断listBox1.SelectedItem == null。
/*后补的
我发现wliceshield应该还有点水平可是怎么总说错话呢。。。如果是null怎么不能复制给mystr1?把null付给一个字符串有什么地方错?它错在不能调用null.ToString()函数上。再有你那么用try/catch真的不敢恭维。。。catch到异常,程序就已经被强行中断了,就是说明你的程序出错了,然后你对错误进行一些处理,比如提醒。而你却做了和功能相关的逻辑操作。。。无语。。。别误导别人。。。
*/

很简单。。NullReferenceException就是引用为空。。估计就是问题出在listBox1.SelectedItem 上,当listBox1.SelectedItem 为NULL时没有办法将这个引用赋值给mystr1,所以自然就会引发异常。。
你可以尝试改成
str.Append(",你的体重:");
//str.Append(listBox1.SelectedItem.ToString());
try{
String mystr1 = listBox1.SelectedItem.ToString();
str.Append(mystr1)
}
catch(NullReferenceException e)
{
str.Append(",没选!");
}

原因是你画面上的listBox1控件没有选择任何项目。
这样的话listBox1.SelectedItem的结果就是null
listBox1.SelectedItem.ToString()就是对null使用ToString方法。当然不行了。
你可以吧判断条件
if (mystr1 == "&q