返回的字符串引用值为null
本文关键字:null 引用 字符串 返回 | 更新日期: 2023-09-27 18:30:08
我有一个愚蠢的错误,我无法处理。
我使用一个字符串来检查文件夹的名称及其扩展类型。我这样做是为了在文件夹之间导航。这适用于我的第一个文件夹选择,但是,当我尝试点击第二个文件夹时,我会得到null引用异常。
这就是我现在所拥有的。
string clickObject = listBox1.SelectedItem.ToString();
int index = clickObject .LastIndexOf('.');
string extension = clickObject .Substring(index + 1, clickObject .Length - index - 1);
if (extension == "folder")
{
// do stuff
}
之后,我只需检查文件夹中的文件。
当我回到我的可搜索文件夹的根目录并单击另一个目录时,也就是当我收到错误并高亮显示string clickObject = listBox1.SelectedItem.ToString();
行时。
在我设置这个的方法结束时,我尝试设置clickedObject = null;
,我尝试删除clickObject.Remove(0);
中包含的字符串,但错误仍然存在。
如何清除clickedObject中的信息,以便用新信息覆盖它?
编辑
抱歉忘了提到当我回到根目录时,我有一个调用此方法的按钮:
using (var client = new WebClient())
{
result = client.DownloadString("http://foo.foo.com/images/getDirectoryList.php");
}
string[] names = result.Split('|');
listBox1.Items.Clear();
foreach (string name in names)
{
listBox1.Items.Add(name);
}
listBox1.Update();
listBox1.SelectedIndexChanged += new System.EventHandler(this.listBox1_SelectedIndexChanged);
然而,当我单击列表框中的一个项目时,它是使用的第一组代码,并且是在sepearate方法中。
如果您正在处理SelectedIndexChanged
事件,您需要处理它为null的情况,因为在某些情况下它不会被设置。
因此,在处理程序中,在尝试将listBox1.SelectedItem
转换为字符串之前,您必须检查它是否为null:
if (listBox1.SelectedItem != null)
{
// Your code
}
不确定这是否是一个错误。。但我以前也遇到过这种情况。
问题是,SelectedItem
在SelectedIndexChanged
事件期间并不总是可用。。或者有时根本没有。
修复方法是直接访问项目:
string clickObject = listBox1.Items[listBox1.SelectedIndex].ToString();
还有,当你在那里的时候。。您可以在System.IO
中使用File.GetExtension
方法来获得扩展(而不是自己做):
using System.IO;
string extension = File.GetExtension(clickObject);