C#中字符串明明相等但是对比后的值永远为False

在一次编程练习中,遇到一个问题,`countMale1` 方法在统计学生集合中男性数量时,if 判断始终错误。原因在于数据库中学生性别字段为 nchar(10),存在前导空格,导致与字符串men比较失败。解决方案是在比较前使用 `Trim()` 方法去除空格,确保正确比较。这个情况提醒我们在处理数据库数据时要注意潜在的格式问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在一个练习项目中出现了个非常让人费解的问题:

        public static int countMale1(List<Student> stu)
        {
            int maleNum = 0;
            int a = 0;
            foreach (Student students in stu)
            {

                if (students.Gender.Equals("men"))
                {
                    maleNum++;
                }

                a = maleNum;

            }
            return a;
        }

练习项目是为了统计每个班级男生女生的简单方法,但是方法中的一个if语句却一直跳向else;

方法是将查询到的学生集合作为参数,在方法中遍历学生集合拿每个学生和字符串men作比较,打了断点发现每次都执行false,将学生对象打出来是men但是判断还是false;

最后发现问题出在了数据上,学生集合是从数据库中查出来的,数据库的学生性别字段是nchar(10),会在上面自动补了7个空格,导致比较不一致。

解决方法:将遍历出来的性别使用Trim()方法修整好去除空格作比较就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值