2013-01-22 47 views
-1

有了這個代碼的「如果」行斷點:爲什麼這種情況等同於錯誤?

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是「(空單)」,但病情被視爲假 - 條件失敗。爲什麼?

+0

什麼ckbx.Content的類型? – Ameen

+0

它似乎正常工作。第一個條款是真的, 「(空列表)」。包含(「空列表」)是真的,但你扔了!在前面,所以它是錯誤的 –

+0

在這種情況下使用調試器非常有用。 –

回答

3

... ckbx.Content是「(空列表)」,但條件被視爲假 - 條件失敗。爲什麼?

你的條件有logical negation operator!)否定的Contains結果:

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

因此,如果內容包含 「(空單)」,Contains將返回true!會使它false,這使得條件失敗。

+0

正確;現在我想知道它爲什麼直到最近才奏效。我敢肯定,我沒有觸及那個代碼... –

+0

啊,現在我明白了 - 這是它應該如何工作的(與「非空列表」);在回到這個項目之後,我忘記了沒有顯示編輯或刪除,如果該項目還沒有創建(在這種情況下,內容是「空列表」...) –

2

(ckbx.Content != null)是真的

(!ckbx.Content.ToString().Contains("(Empty list)")是假的 - 你剛纔說,這是空列表...這支票是不是空的列表(在前面感謝「!」 - 「! 「意味着不)。

真& &假的,當然,等同於假

相關問題