Я использую ReSharper 5.0, и мне интересно, как его функция анализа кода знает, чтобы высвечивать следующий assemblies == null
с комментарием "Expression всегда false".
var directory = new DirectoryInfo("somedir");
FileInfo[] assemblies = directory.GetFiles("*.dll");
if (assemblies == null <<--- this is highlighted with "Expression is always false"
|| assemblies.Length == 0)
{
_log.Warn("No assemblies found");
}
Я бы понял, был ли тип возвращаемого значения тип значения, а это не так. Я также понял бы, существует ли какой-то контракт с кодом или метаданные, в которых .GetFiles()
никогда не вернет значение null. но я не думаю, что есть.
Итак - как он это знает? Я упускаю что-то очевидное или у ReSharper есть некоторые привилегированные знания, такие как внутренний список метаданных о методах структуры? Или это действительно "заставляет" внутреннее кодирование и работать?