gpt4 book ai didi

c# - 针对多个值测试变量?

转载 作者:太空狗 更新时间:2023-10-30 00:20:50 24 4
gpt4 key购买 nike

我记得在这里看到过一个关于同样问题的问题,比如:

if( x==null || x==" " || x==" " || x=="\n")...

最终变成又长又丑的字符串,但答案不是很好,我不记得它是什么了。

我正在学习 MySQL 的教程,在 SQL 中解决问题的方法是使用关键字“IN”。

WHERE value IN (1 , 22, 35)...

所以我想知道这样做是否被认为是低效或不良做法:

object[] BadVals = {null, " ", "  ", "\n"};
if(Array.IndexOf(BadVals, x) != -1)...

最佳答案

它在理论上肯定不如直接的 if 测试有效,但这是一个转移注意力的问题。真正的问题是:你关心吗?

这个问题有两个方面。

  1. 如果速度慢了怎么办?如果您没有在执行一百万次的受 CPU 限制的循环上运行它,那么差异纯粹是理论上的。使用任何能够产生更多无错误代码的东西,让阅读和维护变得愉快。
  2. 如果它更丑怎么办?你要写很多次吗?当然不是——如果您打算多次使用它,请将它放在一个命名良好的方法中,再也不要考虑它。

至于 LINQ 方法,它比您拥有的方法更短且可读性更强:

if((new[] { null, " ", "  ", "\n" }).Contains(x)) ...

您可能想编写另一个扩展方法,允许您在调用它时操作数位置颠倒,例如

if(x.In(new[] { null, " ", "  ", "\n" })) ...

结论:我会使用 LINQ 来测试超过 3 个左右的值,前提是没有其他更明显的方法来检查这些值(例如,在本例中为 IsNullOrWhiteSpace非常接近)并且没有明显的性能影响。否则,if 是经过验证的。

关于c# - 针对多个值测试变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8888412/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com