如果条件在同一车道,则c#倍数

时间:2013-09-29 17:20:03

标签: c# .net

使用c#并使用具有多个条件的IF语句时,我遇到了一些问题。

这是最常见的情况。

private void SomeFunction(string SomeString)
{

   if(SomeString != null && SomeString.Trim() != "")
   {
   }
}

在某些语言中,如果第一个参数失败(SomeString!= null),则需要进行第二次检查。 C#似乎检查两个参数,即使第一个失败,然后第二个会抛出异常,因为你不能在空值上使用.Trim()。

现在我正在通过嵌套我的ifs来解决这个问题。像这样:

private void SomeFunction(string SomeString)
{

   if(SomeString != null)
   {
     if(SomeString.Trim() != "")
     {
      .....
     }
   }
}

有没有人有更好的解决方法的建议或最佳做法?

5 个答案:

答案 0 :(得分:4)

  

C#似乎检查两个参数,即使第一个参数失败

不正确,请参阅MSDN中的&& Operator (C# Reference)

答案 1 :(得分:3)

有一种更好的方法:

private void SomeFunction(string SomeString)
{
    if (!string.IsNullOrWhiteSpace(SomeString))
    {
        // your code
    }
}

答案 2 :(得分:3)

您的假设完全错误。当您使用条件 AND 时,如果第一个条件为FALSE,则永远不会评估或执行第二个条件。在条件 OR 中,如果第一个条件为TRUE,则永远不会评估或执行第二个条件。

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

这称为short-circuit evaluation

这是C派生语言的基本编程原则,但也适用于所有其他主要语言。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

if(!string.IsNullOrEmpty(SomeString))

类似于ProgramFOX,如果你坚持做“.Trim()”

,则更喜欢这个