Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在if语句中使用方法调用程序_C#_Multithreading_Listbox_Method Invocation - Fatal编程技术网

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。这是极不可能的,但从来不是一个如此绝对和有力的词。