为什么这种情况等于假?

时间:2013-01-22 20:02:23

标签: c# checkbox contextmenu windows-store-apps

在此代码的“if”行中有一个断点:

if ((ckbx.Content != null) && (!ckbx.Content.ToString().Contains("(Empty list)")))
{
    string groupName = ckbx.Content.ToString();
    var contextMenu = new PopupMenu();

    contextMenu.Commands.Add(new UICommand("Edit this Group", contextMenuCmd => Frame.Navigate

    (typeof(LocationGroupCreator), groupName)));

    contextMenu.Commands.Add(new UICommand("Delete this Group", async (contextMenuCmd) =>
    {
        await SQLiteUtils.DeleteGroupAsync(groupName); 
    }));

    await contextMenu.ShowAsync(args.GetPosition(this));
}

... ckbx.Content是“(空列表)”,但条件被视为假 - 条件失败。为什么呢?

2 个答案:

答案 0 :(得分:3)

  

... ckbx.Content是“(空列表)”,但条件被视为假 - 条件失败。为什么呢?

您的情况有logical negation operator!)否定Contains的结果:

 (!ckbx.Content.ToString().Contains("(Empty list)"))

因此,如果内容包含“(空列表)”,则Contains将返回true,而!将使其成为false,这会使条件成为{1}}失败。

答案 1 :(得分:2)

(ckbx.Content != null)是真的

(!ckbx.Content.ToString().Contains("(Empty list)")是假的 - 你只是说它是空列表......并且这检查是不是空列表(感谢前面的“!” - “!”表示NOT)

true&&假,当然等于假