Если вы проверяете объект для его типа и узнаете, что он относится к типу, который вы проверяли, и вы его преобразовываете в этот тип, может ли этот тип по-прежнему оставаться нулевым после преобразования?Если объект указанного типа, может ли он быть еще нулевым?
Качество сканирования приложение код, который я бегу жалуется следующее:
if (tx.Tag is ExtendedNodeInfo && ty.Tag is ExtendedNodeInfo)
{
var tagX = tx.Tag as ExtendedNodeInfo;
var tagY = ty.Tag as ExtendedNodeInfo;
// HP Fortify scan says the below line's use of tagX/Y can be null.
// If I add null checks below for taX/Y, Resharper says
// its redundant as its always not null
return tagX.Ordinal.CompareTo(tagY.Ordinal);
}
'tagX/Y'' может быть нулевым, что я вижу –
Возможно, Ординал имеет значение null? –
Если значение tx.Tag равно null, это приведет к отказу первого условия, поэтому ненулевая проверка будет ненужной, в результате чего Resharper отметит это. Но возможно, что tagX/tagY_technically_ может быть нулевым, что заставляет Fortify отмечать его. Попробуйте поместить нулевую проверку вокруг фрагмента кода - это может быть как счастливым. например 'if (tx.Tag! = null && ty.Tag! = null) {' – Ulric