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# 似乎检查了两个参数,即使第一个参数失败了
这不是真的,请参阅 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 如果您坚持这样做,则更喜欢这样做"。修剪()"