C# Forms-KeyNotFoundException:给定的键在字典C中不存在#

C# Forms-KeyNotFoundException:给定的键在字典C中不存在#,c#,xamarin.forms,C#,Xamarin.forms,我使用的是Xamarin.Forms,我发现以下错误: KeyNotFoundException:字典中不存在给定的键 对于这一行: bool isLogin = (bool)Application.Current.Properties["isLogin"]; 我试着检查钥匙是否存在,就像这样: if(Application.Current.Properties.ContainsKey("isLogin")) { bool isLogin

我使用的是Xamarin.Forms,我发现以下错误:

KeyNotFoundException:字典中不存在给定的键

对于这一行:

bool isLogin = (bool)Application.Current.Properties["isLogin"];
我试着检查钥匙是否存在,就像这样:

if(Application.Current.Properties.ContainsKey("isLogin"))
            {
                bool isLogin = (bool)Application.Current.Properties["isLogin"];

                string username = Application.Current.Properties["username"].ToString();

                if (isLogin)
                {
                    Application.Current.MainPage.Navigation.PushAsync(new MenuPage(), true);
                }
            }
但即使在设置了键和值之后,检查键也始终返回false:

Application.Current.Properties["isLogin"] = true;

Application.Current.Properties将存在,即使您关闭应用程序并重新启动它。只要试着用这种方式拔下你的设备,并尝试登录和检查,它会工作。调试时它将不起作用。

何时在字典中设置该值?也许你是在检查后设置的。请提供更多的上下文。我会在成功登录后设置它,当我再次运行应用程序时,它会说它不存在。当然,字典存储在内存中,因此它会在应用程序重新启动时被销毁并重新初始化。因此,您应该在本地保存登录数据(文件、sqlite等),并在应用程序启动时从本地存储的数据对其进行初始化,或者在登录后在不重新启动的情况下重新初始化应用程序。您正在尝试在添加密钥之前获取密钥!哦,我以为Application.Current.Properties在重新启动应用程序时会起作用