2013-08-30 3 views
0

У меня есть условие, что если переменная равна нулю. Но этот код нарушает приложение из-за нулевой переменной.Если ошибка условия?

КОД:

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

Вы должны установить точку останова, запустить приложение в отладке и посмотреть, какая переменная имеет значение null. –

+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 (« Без закладки сохранено! »);' Не запускался –

1

Использование && в состоянии, если, страница не может быть пустым, но хэш нет, так что перейти к другому clausule и, как страница является недействительным, это не в состоянии.

Попробуйте заменить && на || Таким образом, каждый раз, когда страница OR hash имеет значение null, она отображает окно сообщения.

Обновлено: Поскольку страница и хэш-переменные строки, вам необходимо проверить их с помощью 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

Try:

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

Вместо этого. Для запроса требуется, чтобы обе переменные были пустыми.

+0

я использовал. так как он показывает ошибку –