2013-08-30 41 views
0

我做了一个条件,如果变量为null。但是这个代码仍然因为null变量而破坏了应用程序。如果条件错误?

CODE:

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)); 
} 
+0

您应该放置一个断点,在调试中启动您的应用程序并查看哪个变量为空。 –

+0

两者都为空... –

+0

它是否在var页面中断? –

回答

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)); 
} 
+0

错误:'qsPage和Ayath不在当前上下文中' –

+0

@ user2655873看到我编辑的代码 –

+0

现在应用程序不会中断。但是,'MessageBox.Show(“No Bookmark has been saved!”);'还没有运行 –

1

在if条件使用&&,页面可以为空,但哈希没有,所以去到别的clausule,并在页面为空,则失败。

尝试用&&代替||这样,每次页面OR散列都为空时,它会显示消息框。

更新:由于网页和散列变量是字符串,则需要使用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)); 
} 
+0

我完成了。因为它显示错误 –

+1

什么类型的页面和哈希实际上是?也许他们不是可以空的类型。如果它们是一个字符串,则需要查找string.IsNullOrWhiteSpace而不是null,如果它们是int,则可以看到它们是否为0,因为它是整数的默认值 –

+0

它们是数字,我将它存储在字符串中,由于孤立存储。 –

1

尝试:

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

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

+0

我用过。因为它显示错误 –