C#Condition语句不返回true

 名将箱包_714 发布于 2023-02-13 15:10

我有一个条件比较两个整数,但它永远不会返回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)...谢谢

1 个回答
  • 请尝试使用Equals:

    if (object.Equals(subCategory.Tag, item.Tag)){
     //...
    }
    

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

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

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

    //subCategory.Tag should not be null
    if (subCategory.Tag.Equals(item.Tag)){
       //...
    }
    

    2023-02-13 15:12 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有