在上图中,您可以从代码契约(Contract)中看到警告。我认为这不合法,因为this
永远不能是null
。
这是错误还是我错过了什么?
此属性是以下类的成员:
public class NHibernateIQueryableQueryBase<TEntity, TQuery, TQueryInterface>
: IQuery<TEntity>, IFluentQueryInterface<TEntity, TQueryInterface>
where TQuery : NHibernateIQueryableQueryBase<TEntity, TQuery,
TQueryInterface>,
TQueryInterface
where TQueryInterface : IQuery<TEntity>
更新:
将属性更改为以下内容仍会在
return result;
行上显示警告:public TQueryInterface And
{
get
{
var result = this as TQuery;
return result;
}
}
最佳答案
分析无法理解this
可以保证实现TQuery
。
因此,警告您可能最终将null
引用用作接口(interface)类型,并将其作为实现该接口(interface)的struct
返回:
您需要将: class
添加到TQueryInterface
参数的约束中。
关于c# - CodeContracts : false warning "Possibly unboxing a null reference",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13274102/