2013-08-30 40 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

我用過。因爲它顯示錯誤 –