Я обычно использую высоту строки, чтобы отрегулировать вертикальное положение моего статического текста:
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, которая помогает.
OrElse
- это сокращающий оператор, Или
- нет .
По определению логического оператора 'or', если первый член истинен, тогда все определенно истинно, поэтому нам не нужно оценивать второй член.
OrElse
знает это, поэтому не пытается вычислить temp = 0
после того, как будет установлено, что temp Is DBNull.Value
Или
не знает этого и всегда будет пытаться оценить оба термина. Когда temp Is DBNull.Value
, его нельзя сравнивать с нулем, поэтому он падает.
Вы должны использовать ... ну,
OrElse закорочен , это означает, что только одна сторона выражения будет проверена, если первая сторона совпадает.
Так же, как AndAlso будет только проверять одна сторона выражения, если первая половина - неудачная.
(Я просмотрел другие ответы и понял, что был ужасно неправ)
Оператор OrElse «выполняет короткое логическое разделение двух выражений», то есть: если левый операнд истинен, и поэтому все выражение гарантированно истинно, правый операнд даже не будет оцениваться (это полезно в таких случаях, как:
string a;
//...
if (a is null) or (a = "Hi") //...
, чтобы избежать выброса исключения NullReferenceException правым операндом.
I Я искренне удивлен, что эта ( ленивая оценка ) не является поведением по умолчанию для или
, и
, как в C / C ++ и C # (и многих другие языки ...)
Это то же поведение, что и в C#, где все используют Кодиционный Или (||) и Условный И (&&), где у вас также есть нормальное Или (|) и нормальное И (&). Таким образом, сравнение C# с VB.Net:
| => Ор
|| => OrElse
& => And
&& => AndAlso
Кондифитональные логические операторы очень полезны для предотвращения вложенных конструкций. Но иногда для обеспечения попадания в оба пути кода требуются обычные логические операторы.