Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c同一车道上的多个if条件_C#_.net - Fatal编程技术网

C# c同一车道上的多个if条件

C# c同一车道上的多个if条件,c#,.net,C#,.net,在使用c和使用带有多种条件的IF语句时,我遇到了一个小问题 这是最常见的情况 private void SomeFunction(string SomeString) { if(SomeString != null && SomeString.Trim() != "") { } } 在某些语言(如javascript)中,如果第一个参数失败,则为SomeString!=第二次检查将不进行。C似乎会检查这两个参数,即使第一个参数失败,第二个参数也会抛出异常,因

在使用c和使用带有多种条件的IF语句时,我遇到了一个小问题

这是最常见的情况

private void SomeFunction(string SomeString)
{

   if(SomeString != null && SomeString.Trim() != "")
   {
   }
}
在某些语言(如javascript)中,如果第一个参数失败,则为SomeString!=第二次检查将不进行。C似乎会检查这两个参数,即使第一个参数失败,第二个参数也会抛出异常,因为不能在null值上使用.Trim

现在,我正在通过嵌套我的ifs来检查这个问题,这是一个混乱的工作。像这样:

private void SomeFunction(string SomeString)
{

   if(SomeString != null)
   {
     if(SomeString.Trim() != "")
     {
      .....
     }
   }
}
有人对更好的解决方法有什么建议或最佳实践吗?

有更好的方法:

private void SomeFunction(string SomeString)
{
    if (!string.IsNullOrWhiteSpace(SomeString))
    {
        // your code
    }
}
即使第一个参数失败,C似乎也会检查这两个参数

事实并非如此,请参见MSDN。

您的假设完全错误。使用条件时,如果第一个条件为FALSE,则永远不会计算或执行第二个条件。在条件中,或者如果第一个条件为真,则永远不会计算或执行第二个条件

换句话说,如果编译器有足够的信息来确定表达式的结果,它会停下来考虑表达式的第二部分。 这被称为

它是C派生语言的基本编程原则,也是所有其他主要语言的基本编程原则

if (!String.IsNullOrEmpty(SomeString))
{
}

与程序类似,如果你坚持这样做,福克斯更愿意这样做。Trim

好的经验法则:选择容易阅读和理解的内容。就我个人而言,我更喜欢第一种。如果第一个条件失败,C将不检查第二个条件。C使用短路求值,就像JavaScript一样。如果SomeString为null,则表达式的下一部分将不会计算。我刚刚检查了第一个代码段,实际上是SomeString.Trim!=如果第一次失败,则从未得到评估。我很惊讶!它真的解决了OP问题吗?他询问了有关操作数求值的问题(&O)!是的,它确实解决了这个问题。问题的最后一句话:有人对解决这个问题的更好方法有什么建议或最佳实践吗?我的回答展示了一个更好的解决问题的方法。严格地说,OP写了一些字符串。Trim!=它的目的是检查是否为空,而不是检查是否为空白。@haim770:否,如果字符串仅包含空白,Trim将删除所有空白并返回一个空字符串。这并不能真正回答问题。代码示例只是一个一般问题的示例。这只解决了这个例子,而不是问题所在的一般问题。经过进一步测试,你说得很对,我很抱歉在进一步调查一些没有给我正确答案的谷歌搜索之前,匆忙发表文章。看来这不是我的问题,也不是例外的原因,但毕竟是别的原因。
if(!string.IsNullOrEmpty(SomeString))