C# 如果条件错误?

C# 如果条件错误?,c#,windows-phone-8,C#,Windows Phone 8,我已经做了一个条件,如果变量为null。但由于空变量,此代码仍然会破坏应用程序 代码: 在if条件下使用&&,页面可以为null,但哈希值为no,因此它转到else子句,当页面为null时,它将失败 尝试将&&替换为| |,这样,每次页面或哈希为空时,都会显示消息框 更新:由于页面和哈希变量是字符串,因此需要使用string.IsNullOrWhiteSpace测试它们,方法如下: var page = IsolatedStorageSettings.ApplicationSettings["q

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

代码:


在if条件下使用
&&
,页面可以为null,但哈希值为no,因此它转到else子句,当页面为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));
}

在if条件下使用
&&
,页面可以为null,但哈希值为no,因此它转到else子句,当页面为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));
}
尝试:

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

请尝试:


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

您必须检查
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));
}

您必须检查
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));
}


你们应该设置一个断点,在调试中启动你们的应用程序,看看哪个变量是空的。它在变量页上断开了吗?你们应该设置一个断点,在调试中启动你们的应用程序,看看哪个变量是空的。它在变量页上断开了吗?页面和散列实际上是什么类型的?也许它们不是可空类型。如果它们是字符串,则需要查找string.IsNullOrWhiteSpace而不是null,如果它们是int,则可以查看它们是否为0,因为这是整数的默认值。它们是数字,我将其存储在字符串中,因为是独立存储。好的,然后使用string.IsNullOrWhiteSpace而不是null,因为字符串不是null,默认情况下,它们是string.empty。我编辑了我的答案,以显示您需要如何测试页面和哈希变量。
参数1:无法将“object”转换为“string”,这是与“string.IsNullOrWhiteSpace(string)”最匹配的重载方法。
错误页面和哈希的实际类型是什么?也许它们不是可空类型。如果它们是字符串,则需要查找string.IsNullOrWhiteSpace而不是null,如果它们是int,则可以查看它们是否为0,因为这是整数的默认值。它们是数字,我将其存储在字符串中,因为是独立存储。好的,然后使用string.IsNullOrWhiteSpace而不是null,因为字符串不是null,默认情况下,它们是string.empty。我编辑了答案,以显示您需要如何测试页面和散列变量。
参数1:无法将'object'转换为'string'的最佳重载方法匹配'string.IsNullOrWhiteSpace(string)“
ErrorsError:
qsPage和Ayath不在当前上下文中
现在应用程序不会中断。但是,
MessageBox.Show(“没有保存书签!”)
未运行Yes,因为如果IsolatedStorageSettings.ApplicationSettings.Contains(“qsPage”)不包含任何值,则它将不会在if中执行代码statement@user2655873查看我的回答错误:
qsPage和Ayath不在当前上下文中
现在应用程序不会中断。但是,
MessageBox.Show(“没有保存书签!”)
未运行Yes,因为如果IsolatedStorageSettings.ApplicationSettings.Contains(“qsPage”)不包含任何值,则它将不会在if中执行代码statement@user2655873看到我的答案了吗