希望这应该是一个简单的问题,但作为一个新手,我不知道答案。
在下面的代码中,如果ignorePath为true,即使tempPath不为null且tempPath长度不为0,我也不想输入if语句。会这样做,但似乎没有。
if (((tempPath != null) && (tempPath.Length != 0)) | ignorePath == false)
{
}
由于
答案 0 :(得分:1)
我会说以下代码会更清楚:
if ((!ignorePath) && (tempPath != null) && (tempPath.Length != 0))
{
// do something here
}
首先验证ignorePath
是否为假(因为您不希望代码在真实时执行),然后检查tempPath
是否为null
并且长度不为零。
此处的优点是您已将ignorePath
变量的检查移至第一个。因为它显然对你来说是最重要的(它超越了其他两个条件),所以它应该首先是为了清晰和可读性(和性能,我想,但这在这里几乎不重要)。
请记住,没有理由根据文字值true
或false
检查布尔类型。 if
语句已经评估( )
内的语句值是true
还是false
。明确地指定它只是多余的。
我在上面的代码中看到的唯一问题是!ignorePath
有点难以理解。它创造了一个双重否定,因为你“不忽视”某些东西。这到底是什么意思呢?这就是为什么大多数编码标准(包括Microsoft推荐的.NET标准)都鼓励您使用正语法命名布尔变量。我将这个变量称为checkPath
,而不是{{1}}。
答案 1 :(得分:0)
因此,如果我清楚地理解,当ignorePath
为true
时,您是否要忽略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)))
{
}