1

我在我当前的项目中发现了这个错误,然后我用一个非常简单的代码进行了复制,我在这里分享。

我正在使用 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; }
}
4

1 回答 1

-1

这是因为您已经有一个条件语句,ClientId在将它分配给变量之前检查它是否具有值。因此表达式总是正确的

于 2015-09-17T16:50:21.703 回答