ReSharper建议说,错误的“表达式永远是正确的”
本文关键字:永远 表达式 错误 ReSharper | 更新日期: 2023-09-27 18:13:22
我在我当前的项目中发现了这个bug,然后我在一个非常简单的代码中复制了这个bug,我在这里分享。
我用的是ReSharper 8.0.2和Visual Studio 2013。
class Program
{
static void Main(string[] args)
{
var orders = new List<Order> { new Order {ClientId = 10}, new Order()};
var firstOrder = orders.FirstOrDefault();
if ( firstOrder != null && firstOrder.ClientId.HasValue)
{
// In this line resharper suggests that t.ClientId.HasValue is always true. This is wrong.
var ordersWithClient = orders.Where(t => t.ClientId.HasValue).ToList();
}
}
}
class Order
{
public int? ClientId { get; set; }
}
这是因为你已经有了一个条件语句,在将ClientId
赋值给变量之前检查它是否有值。因此表达式总是为真