У меня есть этот код:ReSharper не может найти недостижимый код
Assert.IsTrue(datasetMetadata1 != null && datasetMetadata1.Length == 5);
Assert.IsTrue(datasetMetadata2 != null && datasetMetadata2 .Length == 11);
if ((datasetMetadata1 == null || datasetMetadata1.Length != 5) ||
(datasetMetadata2 == null || datasetMetadata2 .Length != 11)
{
/* do something */
}
которого ReSharper упрощает путем удаления излишнего (потому что true
) ВСЕГДА выражение == null
и опрокидывание if
-statement на нечто похожее на:
if ((datasetMetadataPunktort.Length == 5) && (datasetMetadataFlurstueck.Length == 11))
return
Однако мне кажется, что даже эта проверка бессмысленна и может быть легко исключена, поскольку условие всегда истинно. Поэтому мне интересно, почему ReSharper обнаруживает устаревшую проверку против null
, но не для остальных.
Я пропустил какой-либо случай, когда проверка не удалась?
Как Reharper должен знать, какие значения будет иметь длина во время выполнения? – Alex
@ j0ey_wh Хммм, справедливая точка.Он не может знать, является ли свойство неизменным, это то, что вы имеете в виду, разве это не так? – HimBromBeere
Может быть, если вы представите переменную длины, она заметит? – Euphoric