使用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() != "")
{
.....
}
}
}
有没有人有更好的解决方法的建议或最佳做法?
答案 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,则永远不会评估或执行第二个条件。
换句话说,如果编译器有足够的信息来确定表达式的结果,那么它就会停下来考虑表达式的第二部分。
这是C派生语言的基本编程原则,但也适用于所有其他主要语言。
答案 3 :(得分:0)
if (!String.IsNullOrEmpty(SomeString))
{
}
答案 4 :(得分:0)
if(!string.IsNullOrEmpty(SomeString))
类似于ProgramFOX,如果你坚持做“.Trim()”
,则更喜欢这个