我记得在这里看到一个关于同样问题的问题,其中包括:
if( x==null || x==" " || x==" " || x=="\n")...
Run Code Online (Sandbox Code Playgroud)
最终变得长而丑陋的字符串,但答案并不是很好,我不记得它是什么.
我正处于MySQL教程的中间,在SQL中解决问题的方法是使用关键字"IN".
WHERE value IN (1 , 22, 35)...
Run Code Online (Sandbox Code Playgroud)
所以我想知道它是否被认为是低效或不好的做法:
object[] BadVals = {null, " ", " ", "\n"};
if(Array.IndexOf(BadVals, x) != -1)...
Run Code Online (Sandbox Code Playgroud)
它在理论上肯定不是直接if测试,但这是一个红色的鲱鱼.真正的问题是:你关心吗?
这个问题有两个方面.
至于LINQ方法,它比你的方法略短,可读性更强:
if((new[] { null, " ", " ", "\n" }).Contains(x)) ...
Run Code Online (Sandbox Code Playgroud)
您可能想要编写另一个扩展方法,允许您在操作数位置反转时调用它,例如
if(x.In(new[] { null, " ", " ", "\n" })) ...
Run Code Online (Sandbox Code Playgroud)
结论:如果没有其他更明显的方法来检查这些值(例如在这种情况下IsNullOrWhiteSpace非常接近)并且没有明显的性能影响,我将使用LINQ来测试超过3个左右的值.否则,if尝试和真实.