在线等 --- 一个奇怪的if判断

漂泊_DY 2009-07-08 11:33:17

if (RoleClass.LoadRole(int.Parse(roleId[i])).RoleName == "主管")
{
result = true;
}


在断点调试过程中,测得RoleName的值确实是"主管",在即时窗口中输入RoleClass.LoadRole(int.Parse(roleId[i])).RoleName == "主管"
返回为true
但是在程序运行过程中不会进入if语句,也就是说得到的值是false,为何???

前面一直都没问题,最近不知道是怎么回事。。
...全文
77 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
漂泊_DY 2009-11-07
  • 打赏
  • 举报
回复
好久了才想起来还有个贴子没结呢,这次就给大家平均点分,后面来的对不住了,不过还是很感谢各位。最后问题也解决了,是文字编码的问题。
Hide1984 2009-07-08
  • 打赏
  • 举报
回复
没有上下文的程序,没办法帮你了

RoleClass.LoadRole(int.Parse(roleId[i])).RoleName上加个Watch
自己调试下看看到底是什么值。
不是个难的问题,GoodLuck~~
liugangsys 2009-07-08
  • 打赏
  • 举报
回复
"主管"与"主管 "是不一样的,我建议你看看中间是不是有空格。
最好是用Trim()或Substring()试试。
fkestrel 2009-07-08
  • 打赏
  • 举报
回复
if (RoleClass.LoadRole(int.Parse(roleId[i])).RoleName == "主管")
{
result = true;
}

修改为:
[code=c#]if (RoleClass.LoadRole(int.Parse(roleId[i])).RoleName.Trim() == "主管")
{
result = true;
}
[/code]
具体原因我也没有搞清楚.你弄清楚了,告诉我哈.在即时窗口里输加Trim() 和不加Trim()的返回值都是一样的.
我用一句类似的if条件语句: class.GetType().Name == "CAbc" 和 class.GetType().Name.Trim() == "CAbc" .在即时窗口里结果都一样,但在程序里,前者就是进不了条件一直为false.
feiyun0112 2009-07-08
  • 打赏
  • 举报
回复
断点调试 和 实际运行 可能会有些区别, 比如消息的流向,处理的时间

最好是写log看
漂泊_DY 2009-07-08
  • 打赏
  • 举报
回复
#1楼:
断点调试中查看RoleName的值确实是为"主管"。

#2楼:
流程有经过if语句。。
hnjhjzyyxgs 2009-07-08
  • 打赏
  • 举报
回复
看返回的类型是STRING
SQL77 2009-07-08
  • 打赏
  • 举报
回复
if (RoleClass.LoadRole(int.Parse(roleId[i])).RoleName.ToString() == "主管")
??不知道帮顶
风之影子 2009-07-08
  • 打赏
  • 举报
回复
你看看你上面的代码是不是控件没有使流程转向IF

feiyun0112 2009-07-08
  • 打赏
  • 举报
回复
写log
把RoleClass.LoadRole(int.Parse(roleId[i])).RoleName 写到文本文件看是多少

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

http://feiyun0112.cnblogs.com/
amlove 2009-07-08
  • 打赏
  • 举报
回复
字符串比较还是用字符串类的方法,也许问题就在这个地方!
g394594141 2009-07-08
  • 打赏
  • 举报
回复
强烈建议用Equals
libolei 2009-07-08
  • 打赏
  • 举报
回复
判断字符串是否相等用 Equals !!!
qgylovelj 2009-07-08
  • 打赏
  • 举报
回复
"主管"与"主管 "是不一样的,Trim()很重要,比较字符串的时候就是要多考虑些问题
十八道胡同 2009-07-08
  • 打赏
  • 举报
回复
try..

RoleClass.LoadRole(int.Parse(roleId[i])).RoleName.Trim() == "主管"

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧