在一个练习项目中出现了个非常让人费解的问题:
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()方法修整好去除空格作比较就好了。