Останавливает ли .net проверку остальных операторов IF, если вы используете и / или (|| / &&)? - PullRequest
1 голос
/ 24 июня 2011

скажем, у вас есть что-то вроде:

int num = 0

тогда вы делаете

if(num > 5 || num < 4)
{
  ...
}

он проверяет оба, но что если вы сделаете

if(num < 4 || num > 5)
{
  ...
}

проверяет только 1-й оператор? такой же как:

if(num > 5 && num == 0)
{
  ...
}

он должен остановиться после сбоя 1-го и ... верно?

Ответы [ 3 ]

6 голосов
/ 24 июня 2011

Это называется логическая оценка короткого замыкания и (хотя [citation-needed]) да, C # и VB.NET имеют его (спасибо @ Lasse для исправления).

В C # || и && являются короткозамкнутыми версиями | и & соответственно.

4 голосов
/ 24 июня 2011

Да, эта функция называется оценкой короткого замыкания.Если первый аргумент оператора AND (&&) равен false, тогда все выражение будет false.Аналогично ИЛИ (||), если первый операнд равен true, все это правда.

Эта функция полезна, если вы хотите написать код, подобный следующему:

    if(a != null && a.isValid())
        ... Code ...

Таким образом, вы не получите исключение, если a равно нулю.

Документация MSDN http://msdn.microsoft.com/en-us/library/2a723cdk%28v=vs.71%29.aspx

1 голос
/ 24 июня 2011

Если вы все сделаете правильно, да.Взгляните сюда: http://devpinoy.org/blogs/nocampo/archive/2007/09/28/short-circuit-evaluation-in-c-and-vb-net.aspx

РЕДАКТИРОВАТЬ: уточнить;C # да, VB.NET, если вы используете правильные ключевые слова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...