C#帮助OR检查双方

时间:2011-04-16 11:27:50

标签: c#

希望这应该是一个简单的问题,但作为一个新手,我不知道答案。

在下面的代码中,如果ignorePath为true,即使tempPath不为null且tempPath长度不为0,我也不想输入if语句。会这样做,但似乎没有。

if (((tempPath != null) && (tempPath.Length != 0)) | ignorePath == false)
{

}

由于

5 个答案:

答案 0 :(得分:1)

我会说以下代码会更清楚:

if ((!ignorePath) && (tempPath != null) && (tempPath.Length != 0))
{
    // do something here
}

首先验证ignorePath是否为假(因为您不希望代码在真实时执行),然后检查tempPath是否为null并且长度不为零。

此处的优点是您已将ignorePath变量的检查移至第一个。因为它显然对你来说是最重要的(它超越了其他两个条件),所以它应该首先是为了清晰和可读性(和性能,我想,但这在这里几乎不重要)。


请记住,没有理由根据文字值truefalse检查布尔类型。 if语句已经评估( )内的语句值是true还是false。明确地指定它只是多余的。

我在上面的代码中看到的唯一问题是!ignorePath有点难以理解。它创造了一个双重否定,因为你“不忽视”某些东西。这到底是什么意思呢?这就是为什么大多数编码标准(包括Microsoft推荐的.NET标准)都鼓励您使用语法命名布尔变量。我将这个变量称为checkPath,而不是{{1}}。

答案 1 :(得分:0)

因此,如果我清楚地理解,当ignorePathtrue时,您是否要忽略if声明?因此不需要OR,这是第三个AND条件。

if (ignorePath == false && tempPath != null && tempPath.Length != 0)
{

}

答案 2 :(得分:0)

if(!ignorePath ||((tempPath!= null)&&(tempPath.Length!= 0)))

答案 3 :(得分:0)

看起来tempPath是一个字符串,所以你可以写代码如下:

if(!string.IsNullOrEmpty(tempPath) && !ignorePath)
{

}

您需要 &&运算符,因为您希望两个条件都为true才能输入if。

答案 4 :(得分:-1)

像这样改变:

if (!ignorePath)
   if ((tempPath != null) && (tempPath.Length != 0)))
{
}

if (!ignorePath && ((tempPath != null) && (tempPath.Length != 0)))
{
}