C# 在if语句中使用方法调用程序
我试图做的是检查列表框中的项目是否被选中 这个方法是在一个单独的线程上运行的,所以我需要使用一个方法调用程序C# 在if语句中使用方法调用程序,c#,multithreading,listbox,method-invocation,C#,Multithreading,Listbox,Method Invocation,我试图做的是检查列表框中的项目是否被选中 这个方法是在一个单独的线程上运行的,所以我需要使用一个方法调用程序 string list = ""; lbxList.Invoke(new MethodInvoker(delegate { list = lbxList.SelectedItem.ToString(); })); if (list != null) { //do something } 如果所选项为null,则此代码将崩溃,因为字符串列表无法容纳它,因此我需要一种方法将前两行合并到
string list = "";
lbxList.Invoke(new MethodInvoker(delegate { list = lbxList.SelectedItem.ToString(); }));
if (list != null)
{
//do something
}
如果所选项为null,则此代码将崩溃,因为字符串列表无法容纳它,因此我需要一种方法将前两行合并到检查null的if语句中
谢谢这应该可以:
string list = "";
lbxList.Invoke(new MethodInvoker(delegate
{
if (lbxList.SelectedItem != null)
list = lbxList.SelectedItem.ToString();
}));
//do something
只需将if语句放在匿名方法中
注意.ToString不太可能为任何内容返回null,它表示重写类型应实现该方法以返回有意义的值。因为我们已经知道.SelectedItem不是null,所以检查null并不是真正必要的。如果确实需要,您可以将其保留在中,但如果您担心.ToString会返回null,我会将代码改为:
string list = "";
lbxList.Invoke(new MethodInvoker(delegate
{
if (lbxList.SelectedItem != null)
list = lbxList.SelectedItem.ToString() ?? string.Empty;
}));
//do something
这应该做到:
string list = "";
lbxList.Invoke(new MethodInvoker(delegate
{
if (lbxList.SelectedItem != null)
list = lbxList.SelectedItem.ToString();
}));
//do something
只需将if语句放在匿名方法中
注意.ToString不太可能为任何内容返回null,它表示重写类型应实现该方法以返回有意义的值。因为我们已经知道.SelectedItem不是null,所以检查null并不是真正必要的。如果确实需要,您可以将其保留在中,但如果您担心.ToString会返回null,我会将代码改为:
string list = "";
lbxList.Invoke(new MethodInvoker(delegate
{
if (lbxList.SelectedItem != null)
list = lbxList.SelectedItem.ToString() ?? string.Empty;
}));
//do something
它可能永远不会为空。请参阅我的最新答案。没有内置的保证.ToString不会返回null。这是极不可能的,但从来都不是这样一个绝对而有力的词。它可能永远不会为空。请参阅我的最新答案。没有内置的保证.ToString不会返回null。这是极不可能的,但从来不是一个如此绝对和有力的词。