首页 > 解决方案 > Xamarin Forms NavigationPage 不是,但如果语句说它不为空

问题描述

简而言之,我正在尝试确定 NavigationPage 是否为空,但我遇到了一个奇怪的问题。

if (!ReferenceEquals(navigationPage, null))
{
     await navigationPage.PushAsync(page);
}

(它是navigationPage!= null)我将其更改为这个,看看这是否有帮助,但没有这样的运气。本质上,每次我通过我的主页加载新页面时,navigationPage 在调试器中等于 null,但是当我在其上运行 if 并说它是否不等于 null 时,不管调试器说它是 null,if 语句返回 false 说它不为空。在我加载页面 2 次(与页面无关)第三次应用程序崩溃后说“当它尝试执行 navigationPage.PushAsync 时对象为空引用。我已经检查过了,我相信这是因为 navigationPage 为空。

当调试器说它是时,我不知道它是如何说某事不为空的。有任何想法吗?

标签: xamarinnullcomparison

解决方案


通常一个人会使用

await Navigation.PushAsync(page);

并且 Xamarin.Forms 将找到NavigationPage当前页面正在使用的实例,因此不确定您为什么使用NavigationPage(navigationPage) 的实例而不是使用本文档中概述的推荐方法。

但是我不能说,如果没有您共享更多正在使用的代码,最好是MCVE,为什么您的navigationPage实例会被取消。


推荐阅读