我有一个条件比较两个整数,但它永远不会返回true,即使两个数字都相等.
foreach (TreeViewItem item in Categories.Items) { if (subCategory.Tag == item.Tag) { item.Items.Add(subCategory); } }
两者都是TreeviewItem的属性
TreeViewItem catItem = new TreeViewItem(); catItem.Tag = (int)row["CategoryID"]; Categories.Items.Add(catItem);
和
TreeViewItem subCategory = new TreeViewItem(); subCategory.Tag = (int)row["CategoryID"];
即使两个值都变得相等,条件也会返回错误并且不会达到 item.Items.Add(subCategory);
有谁知道我错过了什么?两者都是同一类型(int)...谢谢
请尝试使用Equals
:
if (object.Equals(subCategory.Tag, item.Tag)){ //... }
你所做的比较会比较参考文献,所以它们当然不会相等.
您也可以将每个投射Tag
到int
并比较投射结果,但Equals
在这种情况下使用更方便.
请注意,一个对象也有一个Equals
方法,你也可以使用它,但是如果对象是不安全的null
.
//subCategory.Tag should not be null if (subCategory.Tag.Equals(item.Tag)){ //... }