Есть ли обстоятельства, в которых я бы не хотел использовать оператор AndAlso
, а не оператор And
? & hellip; или в котором я бы не хотел использовать оператор OrElse
, а не оператор Or
?Должен ли я всегда использовать операторы AndAlso и OrElse?
ответ
От MSDN:
закорачивания компромиссы
короткое замыкание может повысить производительность за счет не оценки выражение, которое не может изменить результат логической операции. Однако, если это выражение выполняет дополнительные действия, короткое замыкание пропускает эти действия. Например, если выражение включает вызов процедуры Function, эта процедура не вызывается, если выражение коротко замкнуто, а любой дополнительный код, содержащийся в функции, не запускается. Если ваша программная логика зависит от любого из этого дополнительного кода, вам, вероятно, следует избегать операторов короткого замыкания.
Уверен: если вы хотите убедиться, что оцениваются как части выражения выражения. Это может иметь место, если, например, обе стороны являются вызовами метода, которые возвращают логические значения в результате некоторой другой операции.
Но в общем, вы должны AndAlso/OrElse всякий раз, когда вы будете использовать & &/|| в C/C++/C#, что, конечно, подавляющее большинство времени.
- 1. Операторы Ruby-эквивалента в «OrElse» и «AndAlso» Vb.net
- 2. AndAlso/OrElse в VBA
- 3. AndAlso OrElse может быть аномально медленным
- 4. Исключение с использованием методов выражения OrElse и AndAlso
- 5. Должен ли я всегда использовать HTML-Doctypes?
- 6. Должен ли я всегда использовать дженерики?
- 7. Должен ли я всегда использовать connection.close
- 8. Должен ли я всегда использовать GL_CULL_FACE?
- 9. Должен ли я всегда использовать .off ('load') ;?
- 10. почему AndAlso не замена и
- 11. Должен ли я всегда использовать HttpPost и HttpGet?
- 12. Вставка данных в MySQLi - Должен ли я использовать подготовленные операторы?
- 13. Должен ли я использовать подготовленные операторы для статических значений?
- 14. Зачем использовать And over AndAlso?
- 15. C++ Должен ли я перегружать операторы?
- 16. Должен ли я всегда удалятьEventListener?
- 17. Операторы FindFirst и orElse возвращают разные типы классов
- 18. Правильно ли реализованы IEquatable? Должен ли я всегда переопределять GetHashCode?
- 19. Должен ли я когда-либо использовать display: block, или я должен всегда использовать display: flex?
- 20. Doctrine2 ORM всегда готовит заявления? Должен ли я всегда использовать подготовленные заявления с DBAL?
- 21. Должен ли я всегда использовать параллельный поток, когда это возможно?
- 22. Должен ли я всегда использовать pillar.get вместо столбца ['foo']?
- 23. Должен ли я всегда использовать игровой цикл в игре Silverlight?
- 24. Должен ли я использовать ссылку?
- 25. Должен ли я всегда использовать CookieSyncManager с CookieManager?
- 26. Должен ли я всегда использовать Лямбда-выражения для исключений?
- 27. В C++, должен ли я почти всегда использовать виртуальное наследование?
- 28. Должен ли я использовать noexcept для getters всегда?
- 29. Должен ли я всегда использовать статические заводские методы вместо конструкторов?
- 30. Должен ли я всегда использовать Task.Delay вместо Thread.Sleep?
Можно утверждать, что полагаться на свой логический код для запуска функции неясно, и ваша логика должна быть разработана, чтобы не полагаться на это для ясности и ремонтопригодности. – 2008-09-10 20:48:41