Должен ли я всегда использовать операторы AndAlso и OrElse? - PullRequest
47 голосов
/ 10 сентября 2008

Существуют ли обстоятельства, при которых я не хотел бы использовать оператор AndAlso вместо оператора And? & hellip; или в котором я не хотел бы использовать оператор OrElse вместо оператора Or?

Ответы [ 2 ]

34 голосов
/ 10 сентября 2008

С MSDN :

Компромиссы с коротким замыканием

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

17 голосов
/ 10 сентября 2008

Есть ли какое-либо обстоятельство, при котором я не хотел бы использовать оператор AndAlso вместо оператора And?

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

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

...