Resharper 警告代码启发式无法访问
Resharper warning code heuristically unreachable
我有以下代码,想知道为什么根据 resharper 其他部分无法访问。
private bool SomeMEthod(some parameter)
{
bool status = false;
var someCollection = _entity.CustomerPaymentStatus.Where(record => record.CustomerPaymentId == paymentId && record.CurrentRecord == true);
if (someCollection != null)
{
var receivedPayment = someCollection.FirstOrDefault();
/*some code to save data into DB*/
status = true;
}
else
{
//Some code here to log failure scenario
//here Resharper giving me warning
//code is heuristically unreachable
}
return status;
}
我检查了几个 post 但不太清楚 Code is heuristically unreachable
任何想法请。
如果未找到匹配记录,Linq Where
查询将 return 为空 IEnumerable
,因此 someCollection
永远是 [=13] 的可能性很小=] - 虽然 ReSharper 似乎并不完全确定它。
另见 MSDN Where
.Where()
从不 returns null,但总是 returns 一个 IEnumerable<T>
(或 IQueryable<T>
)。枚举可能有 0 个项目,但它仍然是一个非空可枚举。
假设 _entity 是一个 DbContext,那么总是 returns 一个 IQueryable 对象。
IQueryable<T> someCollection = _entity.CustomerPaymentStatus.Where(...);
IQueryable 对象永远不会为 null(否则您将无法查询它)。
测试该对象的空值不会执行查询。所以
if (someCollection != null)
与
相同
if (true)
我有以下代码,想知道为什么根据 resharper 其他部分无法访问。
private bool SomeMEthod(some parameter)
{
bool status = false;
var someCollection = _entity.CustomerPaymentStatus.Where(record => record.CustomerPaymentId == paymentId && record.CurrentRecord == true);
if (someCollection != null)
{
var receivedPayment = someCollection.FirstOrDefault();
/*some code to save data into DB*/
status = true;
}
else
{
//Some code here to log failure scenario
//here Resharper giving me warning
//code is heuristically unreachable
}
return status;
}
我检查了几个 post 但不太清楚 Code is heuristically unreachable
任何想法请。
如果未找到匹配记录,Linq Where
查询将 return 为空 IEnumerable
,因此 someCollection
永远是 [=13] 的可能性很小=] - 虽然 ReSharper 似乎并不完全确定它。
另见 MSDN Where
.Where()
从不 returns null,但总是 returns 一个 IEnumerable<T>
(或 IQueryable<T>
)。枚举可能有 0 个项目,但它仍然是一个非空可枚举。
假设 _entity 是一个 DbContext,那么总是 returns 一个 IQueryable 对象。
IQueryable<T> someCollection = _entity.CustomerPaymentStatus.Where(...);
IQueryable 对象永远不会为 null(否则您将无法查询它)。
测试该对象的空值不会执行查询。所以
if (someCollection != null)
与
相同 if (true)