相关疑难解决方法(0)

LINQ:不是所有人都不要

通常我想检查提供的值是否与列表中的值匹配(例如,在验证时):

if (!acceptedValues.Any(v => v == someValue))
{
    // exception logic
}
Run Code Online (Sandbox Code Playgroud)

最近,我注意到ReSharper要求我将这些查询简化为:

if (acceptedValues.All(v => v != someValue))
{
    // exception logic
}
Run Code Online (Sandbox Code Playgroud)

显然,这在逻辑上是相同的,可能稍微更具可读性(如果你已经做了很多数学),我的问题是:这是否会导致性能下降?

它感觉应该是这样(即.Any()听起来像是短路,而.All()听起来不是这样),但我没有任何证据证明这一点.有没有人更深入地了解查询是否会解决相同的问题,或者ReSharper是否让我误入歧途?

.net c# linq resharper performance

261
推荐指数
8
解决办法
7万
查看次数

不等式运算符比等式运算符更快吗?

我知道这是一个微观优化,所以我问出纯粹的好奇心.

逻辑上,微处理器不需要比较相等运算符的两个操作数的所有位以确定"FALSE"结果.

注意,这与编程有关,因为它会影响程序的执行速度.

optimization performance cpu-speed

54
推荐指数
5
解决办法
2万
查看次数

标签 统计

performance ×2

.net ×1

c# ×1

cpu-speed ×1

linq ×1

optimization ×1

resharper ×1