C# 在同一通道中有多个 if 条件

本文关键字:if 条件 通道 | 更新日期: 2023-09-27 18:33:10

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

这是最常见的情况。

private void SomeFunction(string SomeString)
{
   if(SomeString != null && SomeString.Trim() != "")
   {
   }
}

在某些语言中,如javascript,如果第一个参数失败(SomeString != null),则不会进行第二次检查。C# 似乎检查了两个参数,即使第一个参数失败,然后第二个参数将引发异常,因为您无法使用 .空值上的 Trim()。

现在我正在通过嵌套我的 ifs 来解决这个问题,这是混乱的工作。喜欢这个:

private void SomeFunction(string SomeString)
{
   if(SomeString != null)
   {
     if(SomeString.Trim() != "")
     {
      .....
     }
   }
}

有没有人对解决这个问题的更好方法有任何建议或最佳实践?

C# 在同一通道中有多个 if 条件

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

这不是真的,请参阅 MSDN 中的 && 运算符(C# 参考)。

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

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

这称为短路评估。

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

有一个更好的方法:

private void SomeFunction(string SomeString)
{
    if (!string.IsNullOrWhiteSpace(SomeString))
    {
        // your code
    }
}
<</div> div class="answers">
if (!String.IsNullOrEmpty(SomeString))
{
}
if(!string.IsNullOrEmpty(SomeString))

类似于 ProgramFOX 如果您坚持这样做,则更喜欢这样做"。修剪()"