首页 新闻 会员 周边

关于条件的简化

0
悬赏园豆:10 [已解决问题] 解决于 2011-02-22 09:14

if((lum.UserUpdateTime != null && rum.UserUpdateTime != null && lum.UserUpdateTime < rum.UserUpdateTime) || (lum.UserUpdateTime == null && rum.UserUpdateTime != null) || (lum.UserUpdateTime != null && lum.UserUpdateTime == null) ){

...

}

这个条件能简化吗?

相当于

(-a^b)V(a^-b)V(-a^-b^c)

poplau的主页 poplau | 初学一级 | 园豆:59
提问于:2011-01-20 15:18
< >
分享
最佳答案
0

(lum.UserUpdateTime != null && lum.UserUpdateTime == null?这句是不是写错了.

如果是的话,可以改成如下.

if ((lum.UserUpdateTime < rum.UserUpdateTime) ||(lum.UserUpdateTime == null) != (rum.UserUpdateTime == null)){                }

原因是:

因为你第一个条件(lum.UserUpdateTime != null && rum.UserUpdateTime != null && lum.UserUpdateTime < rum.UserUpdateTime)如果lum.UserUpdateTime < rum.UserUpdateTime满足,那么前面二个条件就是满足的.你用&&连接,就必需要都满足.所以你前面二个条件没必要写.

而(lum.UserUpdateTime == null && rum.UserUpdateTime != null)|| (lum.UserUpdateTime != null && rum.UserUpdateTime == null)这个条件相对就是说只能一个为空,一个不为空用(lum.UserUpdateTime == null) != (rum.UserUpdateTime == null)就好了.

收获园豆:7
天天不在 | 小虾三级 |园豆:926 | 2011-01-20 16:12
其他回答(2)
0

这能提高多少性能?

如果真想:把括号外面的或,想办法改成与。

收获园豆:2
顾晓北 | 园豆:10844 (专家六级) | 2011-01-20 16:15
0

if(!(lum.UserUpdateTime ==null && rum.UserUpdateTime==null && lum.UserUpdateTime >=rum.UserUpdateTime))

收获园豆:1
manji | 园豆:633 (小虾三级) | 2011-01-20 16:34
....老大,lum.UserUpdateTime ==null && rum.UserUpdateTime==null && lum.UserUpdateTime >=rum.UserUpdateTime这个能为真吗,任何情况你的这表达式都为FALSE.你见过二个NULL能比较大小吗?
支持(0) 反对(0) 天天不在 | 园豆:926 (小虾三级) | 2011-01-20 17:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册