我要做的是检查列表框中的项目是否被选中。
该方法正在一个单独的线程上运行,所以我需要使用我认为的方法调用者。
string list = "";
lbxList.Invoke(new MethodInvoker(delegate { list = lbxList.SelectedItem.ToString(); }));
if (list != null)
{
//do something
}
如果所选项目为null,则此代码将会爆炸,因为字符串列表不会保留它,所以我需要一种方法将前2行组合成if语句检查null。
谢谢
答案 0 :(得分:5)
这应该做:
string list = "";
lbxList.Invoke(new MethodInvoker(delegate
{
if (lbxList.SelectedItem != null)
list = lbxList.SelectedItem.ToString();
}));
//do something
只需将if语句放在匿名方法中。
请注意,.ToString
非常不可能为任何事情返回null
,documentation of object.ToString
表示覆盖类型应该实现返回有意义的值。由于我们已经知道.SelectedItem
不为null,因此检查null不是必需的。如果你真的想要,可以保留它,但是如果你担心.ToString
应该返回null,我会改为将代码更改为:
string list = "";
lbxList.Invoke(new MethodInvoker(delegate
{
if (lbxList.SelectedItem != null)
list = lbxList.SelectedItem.ToString() ?? string.Empty;
}));
//do something