2013-02-26 29 views
2

我想对以下IF语句做一些说明。我知道这种说法可以用许多不同的方式来写......这不是我所要求的。我很好奇为什么ReSharper 7告诉我比较canceled == true是多余的。ReSharper告诉我在IF语句冗余内的Boolean.TryParse()?

bool canceled; 
if (Boolean.TryParse(Request.QueryString["cancel"], out canceled) && 
    canceled == true) 
{ 
    // Transaction canceled... 
} 

这是我的理解是Boolean.TryParse()将基于转换的成功,而不是实际结果输出参数的返回真/假。为什么然后比较canceled == true是多余的?这一点很可能是错误的,对吧?

+0

这是冗余的'== true'的用法。你不需要比较一个bool和一个bool来把它作为一个条件。 =) – 2013-02-26 17:47:26

+0

是的,我现在明白了......男人我觉得很愚蠢。 – 2013-02-26 17:48:18

+0

适用于我们所有人。好。也许不是Jon Skeet。 – 2013-02-26 17:48:52

回答

9

只需使用

if (Boolean.TryParse(Request.QueryString["cancel"], out canceled) && canceled) 
{ 
    // Transaction canceled... 
} 

由于canceled是不是空的,你不需要明确与true布尔比较,为(canceled == true) == canceled

+0

啊,谢谢... DOH!我只是意识到ReSharper并没有告诉我,整个'取消==真正的情况是多余的......只有'==真正的'。 – 2013-02-26 17:47:45

+0

查看http://stackoverflow.com/questions/2977365/which-is-clearer-form-ifvalue-or-ifflag-value/2977394#2977394 – 2013-02-26 17:50:02