0

我做了一个条件,如果变量为空。但是由于 null 变量,这段代码仍然会破坏应用程序。

代码:

var page = IsolatedStorageSettings.ApplicationSettings["qsPage"];
var hash = IsolatedStorageSettings.ApplicationSettings["Ayath"];
if (page == null && hash == null)
// or if i use if (page == null || hash == null)
{    
MessageBox.Show("No Bookmark has been saved !");
}
else
{
NavigationService.Navigate(new Uri("/myWeb.xaml?Page=" + page + "&id=" + hash, UriKind.Relative));
}
4

3 回答 3

1

您必须检查IsolatedStorageSettings.ApplicationSettings["qsPage"];是否返回 null 或任何值。尝试这个。

 object pagedata = null,hashdata = null;
if(IsolatedStorageSettings.ApplicationSettings.Contains("qsPage") && IsolatedStorageSettings.ApplicationSettings.Contains("Ayath"))
{
  var page = IsolatedStorageSettings.ApplicationSettings["qsPage"];
  var hash = IsolatedStorageSettings.ApplicationSettings["Ayath"];

  pagedata = page;
  hashdata = hash;
}
 if (pagedata == null && hashdata == null)
// or if i use if (page == null || hash == null)
{    
 MessageBox.Show("No Bookmark has been saved !");
}
else
{
 NavigationService.Navigate(new Uri("/myWeb.xaml?Page=" + pagedata + "&id=" + hashdata, UriKind.Relative));
}
于 2013-08-30T12:39:10.693 回答
1

在 if 条件中使用&&,页面可以为空,但哈希不,所以它转到 else 子句,并且由于页面为空,它会失败。

尝试替换&&这种||方式,每次页面或哈希为空时,它都会显示消息框。

更新:由于页面和哈希变量是字符串,您需要使用 String.IsNullOrWhiteSpace 对其进行测试,这样:

var page = IsolatedStorageSettings.ApplicationSettings["qsPage"];
var hash = IsolatedStorageSettings.ApplicationSettings["Ayath"];
if (string.IsNullOrWhiteSpace(page.ToString()) || string.IsNullOrWhiteSpace(hash.ToString()))
{
    MessageBox.Show("No Bookmark has been saved !");
}
else
{
    NavigationService.Navigate(new Uri("/myWeb.xaml?Page=" + page + "&id=" + hash, UriKind.Relative));
}
于 2013-08-30T12:29:32.840 回答
1

尝试:

if (page == null || hash == null)

反而。您的查询要求两个变量都为空。

于 2013-08-30T12:30:01.360 回答