Поскольку первая форма использует 2 против 1 C# Операторы, он может составить более CIL-код, хотя в большинстве случаев чаще всего встречался бы, вероятно, не будет иметь значительного размера кода или разницы в производительности.
Что может сделать значительную разницу - читаемость и, следовательно, вероятность ошибок при записи/изменении. Я бы (и вы, Шелдоны, возможно, захотите закрыть глаза), избегайте использования «!» Оператор com-PLETELY. «Гасп! Мой - СЛОВО!» Да, я это сказал. И Я ВМЕСТЕ! С СТРАСТЬЮ! Слишком легко пропустить, поскольку это часто рядом с похожим на вид символом пунктуации (то есть «(») слева и похожий на вид буквой идентификатора (то есть «I») справа. И отсутствие этого может иметь серьезные последствия, так как это будет означать, что вы считаете, что код делает точный OPPOSITE того, что он на самом деле делает! И это также может быть значительно более вероятно упущено дислексией, что делает его потенциально проблемой прав на инвалидность, защищенную ADA.
Рассмотрите следующий, весьма вероятно, например:
if (!IsIisServerConnected)
if (IsOfflineMode || !(IsIisLocalServerConnected || IsIisCloudServerConnected))
Я бы вместо того, чтобы написать следующее:
if (false.Equals(IsIisServerConnected))
if
(
IsOfflineMode
|| false.Equals
(
IsIisLocalServerConnected
|| IsIisCloudServerConnected
)
)
Или в вашем случае:
if (false.Equals(foo == null))
Помните, что C (язык, C#, C++, JavaScript, Java и многих других популярных в настоящее время языков в конечном счете унаследовал их основной синтаксис с) был создан в когда Punch Cards все еще были распространены. С современными процессорными деньгами, оперативной памятью, мониторами и IDE (что «snippet» false.Equals (?) Может быть сгенерирован с помощью специального ярлыка клавиатуры), для большинства людей для большинства приложений читаемость много, много, MUCH (я упоминал " много "?) важнее сохранения нескольких символов кода.
P.S. Вы также можете добавить метод расширения к Boolean
Структуру, вызывающую его, о, я не знаю, Not
! ; D Итак, вы могли бы написать:
if (IsIisServerConnected.Not())
if ((foo == null).Not())
Спасибо всем, может рефакторинг снова: -/ –