2008-09-10 3 views

ответ

32

От MSDN:

закорачивания компромиссы

короткое замыкание может повысить производительность за счет не оценки выражение, которое не может изменить результат логической операции. Однако, если это выражение выполняет дополнительные действия, короткое замыкание пропускает эти действия. Например, если выражение включает вызов процедуры Function, эта процедура не вызывается, если выражение коротко замкнуто, а любой дополнительный код, содержащийся в функции, не запускается. Если ваша программная логика зависит от любого из этого дополнительного кода, вам, вероятно, следует избегать операторов короткого замыкания.

+32

Можно утверждать, что полагаться на свой логический код для запуска функции неясно, и ваша логика должна быть разработана, чтобы не полагаться на это для ясности и ремонтопригодности. – 2008-09-10 20:48:41

15

Уверен: если вы хотите убедиться, что оцениваются как части выражения выражения. Это может иметь место, если, например, обе стороны являются вызовами метода, которые возвращают логические значения в результате некоторой другой операции.

Но в общем, вы должны AndAlso/OrElse всякий раз, когда вы будете использовать & &/|| в C/C++/C#, что, конечно, подавляющее большинство времени.

Смежные вопросы