使用sonarqube来分析我的代码并被告知“'actor'在至少一个执行路径上为空”对于以下代码
if (actor.ProducerAgreementIds != null && actor.ProducerAgreementIds.Count > 0)
{
actor.ProducerAgreementIds
是一个List<string>
。
这个语句是不是已经执行了空检查?或者它应该是:
if (actor != null && (actor.ProducerAgreementIds != null && actor.ProducerAgreementIds.Count > 0))
{
替代方案只是使用条件访问
if (actor?.ProducerAgreementIds != null && actor.ProducerAgreementIds.Count > 0)
是否合适,不会造成下游问题?
谢谢!
通过此验证就足够了:
if (actor?.ProducerAgreementIds?.Count > 0)
{
}