Или по сравнению с OrElse

Я обычно использую высоту строки, чтобы отрегулировать вертикальное положение моего статического текста:

label {
  line-height: 18px;
}
input {
  width: 13px;
  height: 18px;
  font-size: 12px;
  line-height: 12px;
}
<form>
  <div>
    <label><input type="checkbox" /> Label text</label>
  </div>
</form>

Hope, которая помогает.

91
задан shA.t 17 September 2016 в 12:59
поделиться

4 ответа

OrElse - это сокращающий оператор, Или - нет .

По определению логического оператора 'or', если первый член истинен, тогда все определенно истинно, поэтому нам не нужно оценивать второй член.

OrElse знает это, поэтому не пытается вычислить temp = 0 после того, как будет установлено, что temp Is DBNull.Value

Или не знает этого и всегда будет пытаться оценить оба термина. Когда temp Is DBNull.Value , его нельзя сравнивать с нулем, поэтому он падает.

Вы должны использовать ... ну,

138
ответ дан 24 November 2019 в 06:45
поделиться

OrElse закорочен , это означает, что только одна сторона выражения будет проверена, если первая сторона совпадает.

Так же, как AndAlso будет только проверять одна сторона выражения, если первая половина - неудачная.

8
ответ дан 24 November 2019 в 06:45
поделиться

(Я просмотрел другие ответы и понял, что был ужасно неправ)

Оператор OrElse «выполняет короткое логическое разделение двух выражений», то есть: если левый операнд истинен, и поэтому все выражение гарантированно истинно, правый операнд даже не будет оцениваться (это полезно в таких случаях, как:

string a;
//...
if (a is null) or (a = "Hi") //...

, чтобы избежать выброса исключения NullReferenceException правым операндом.

I Я искренне удивлен, что эта ( ленивая оценка ) не является поведением по умолчанию для или , и , как в C / C ++ и C # (и многих другие языки ...)

4
ответ дан 24 November 2019 в 06:45
поделиться

Это то же поведение, что и в C#, где все используют Кодиционный Или (||) и Условный И (&&), где у вас также есть нормальное Или (|) и нормальное И (&). Таким образом, сравнение C# с VB.Net:

| => Ор

|| => OrElse

& => And

&& => AndAlso

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

38
ответ дан 24 November 2019 в 06:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: