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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.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# System.ArgumentNullException:System.Linq.Enumerable.Any处的值不能为null_C# - Fatal编程技术网

C# System.ArgumentNullException:System.Linq.Enumerable.Any处的值不能为null

C# System.ArgumentNullException:System.Linq.Enumerable.Any处的值不能为null,c#,C#,我收到此代码的错误: if (!App.selectedPhrases.Any()) 以下是错误消息: Xamarin异常堆栈:System.ArgumentNullException:值不能为空 无效的参数名称:System.Linq.Enumerable.Any[TSource]处的源 (System.Collections.Generic.IEnumerable`1[T]源)[0x0000d]在 :0 at 中的Japanese.DeckTabViewModel.ShowFirstMes

我收到此代码的错误:

if (!App.selectedPhrases.Any())
以下是错误消息:

Xamarin异常堆栈:System.ArgumentNullException:值不能为空 无效的参数名称:System.Linq.Enumerable.Any[TSource]处的源 (System.Collections.Generic.IEnumerable`1[T]源)[0x0000d]在 :0 at 中的Japanese.DeckTabViewModel.ShowFirstMessageAsync()[0x00029] :0 at Japanese.DeckTabViewModel.OnAppearing()[0x0006c]位于 :0 at 日语中的Japanese.DeckTabPage.onappering()[0x0006d] :0 at System.Runtime.CompilerServices.AsyncMethodBuilderCore+c.b\u 7\u 0 中的(System.Object状态)[0x00000] :0 at Android.App.SyncContext+c_uuuu显示类2_0.b_uu0()[0x00000] in:0 at 中的Java.Lang.Thread+RunnableImplementor.Run()[0x00008] :0 at Java.Lang.IRunnableInvoker.n_运行(System.IntPtr jnienv,System.IntPtr 本机\uuu此[0x00009]位于:0处 (包装器动态方法) Android.Runtime.DynamicMethodNameCounter.34(intptr,intptr)

是否有人对可能发生的事情有任何想法,我如何在异常中找到准确的行号,以及我如何解决这个问题

特别是我对stacktrace没有显示任何行号感到困惑。有人知道这是为什么吗


还有一个问题。我怎么能避免在这里使用“!”呢?因为我觉得这很令人困惑

您必须在
selectedPhrases
上检查
null
, 使用

在C#6及更高版本中可用,空条件运算符应用 对其操作数的成员访问、、、或元素访问、[]操作 仅当该操作数的计算结果为非空时;否则,它将返回 空

但是,由于提升,您必须在if条件下明确指定
false

或者,如果您想在条件中明确检查
null
,可以使用短路()

条件逻辑或运算符| |,也称为 “短路”逻辑OR运算符,计算其逻辑OR 操作数。如果x或y的计算结果为 对。否则,结果为假如果x的计算结果为true,则y不是 评估


最有可能的是
App.selectedPhrases
为空。对于第一个问题,使用
App.selectedPhrases?.Any()
对于第二个问题,如果(App.selectedPhrases.Any()==true)或
如果(App.selectedPhrases.Any()!=true)
没有给出准确的行号,则可以执行
,该错误提示问题的来源
Japanese.DeckTabViewModel.ShowFirstMessageAsync()=>Japanese.DeckTabViewModel.OnAppearing()=>Japanese.DeckTabPage.OnAppearing()
是否存在
async void
?它可以在设置成员之前在单独的线程上执行。这让我相信这可能是一个错误。
if(App.selectedPhrases?.Any() == false)
if(App.selectedPhrases == null || !App.selectedPhrases.Any())