C#Condition语句不返回true

Car*_*ier 0 c# return conditional-statements

我有一个条件比较两个整数,但它永远不会返回true,即使两个数字都相等.

foreach (TreeViewItem item in Categories.Items)
            {
                if (subCategory.Tag == item.Tag)
                {
                    item.Items.Add(subCategory);
                }
            }
Run Code Online (Sandbox Code Playgroud)

两者都是TreeviewItem的属性

TreeViewItem catItem = new TreeViewItem();
catItem.Tag = (int)row["CategoryID"];
Categories.Items.Add(catItem);
Run Code Online (Sandbox Code Playgroud)

TreeViewItem subCategory = new TreeViewItem();
subCategory.Tag = (int)row["CategoryID"];
Run Code Online (Sandbox Code Playgroud)

即使两个值都变得相等,条件也会返回错误并且不会达到 item.Items.Add(subCategory);

有谁知道我错过了什么?两者都是同一类型(int)...谢谢

Kin*_*ing 10

请尝试使用Equals:

if (object.Equals(subCategory.Tag, item.Tag)){
 //...
}
Run Code Online (Sandbox Code Playgroud)

你所做的比较会比较参考文献,所以它们当然不会相等.

您也可以将每个投射Tagint并比较投射结果,但Equals在这种情况下使用更方便.

请注意,一个对象也有一个Equals方法,你也可以使用它,但是如果对象是不安全的null.

//subCategory.Tag should not be null
if (subCategory.Tag.Equals(item.Tag)){
   //...
}
Run Code Online (Sandbox Code Playgroud)