Путать с условными и логическими операторами - VB.net - PullRequest
1 голос
/ 13 сентября 2011

Я новичок в VB.net, и поскольку я только что закончил курс C #, отсутствие скобок создает путаницу в том, как писать определенные комбинации операторов.

Эквивалент C # строки, которую я пытаюсь воспроизвести в VB, будет выглядеть так:

if ( (a == 0 && b != null) || (a == 1 && c != null) )

Я понятия не имею, как написать это в VB, я пробовал много комбинаций And, Or, AndAlso, OrElse и т. Д., Но я не могу достичь желаемого результата.

Я не могу найти четкого примера C # v.s. Сравнение VB.net по операторам и заметки, которые у меня есть, тоже не помогают.

Может кто-нибудь помочь мне разобраться?

Ответы [ 3 ]

4 голосов
/ 13 сентября 2011

Эквивалент vb.net будет

If (a = 0 AndAlso b IsNot Nothing) OrElse (a = 1 AndAlso c IsNot Nothing ) Then

Обратите внимание, что в c # должно быть a == 0, а не a = 0

Оформить заказ этот пост скомплексное сравнение.

4 голосов
/ 13 сентября 2011

Оператор равенства равен == в C # и = в VB.

if ( (a == 0 && b != null) || (a == 1 && c != null) )
    statement; // One single statement only

или

if ( (a == 0 && b != null) || (a == 1 && c != null) ) {
    statement; // Any number of statements
}

Этот онлайн-инструмент преобразует его в VB для вас:

If (a = 0 AndAlso b IsNot Nothing) OrElse (a = 1 AndAlso c IsNot Nothing) Then
    statement
End If

C # && переводится как AndAlso в VB.
C # || переводится как OrElse в VB.

С этими операторами оценка останавливается, как только определяется результат. Это называется оценкой «короткого замыкания». Например. в a && b результат известен как false, если a равен false, а b не будет оцениваться. Это особенно важно, когда оценка имеет побочные эффекты, такие как выполнение запросов к базе данных, создание событий или изменение данных. Это также полезно в условиях, подобных этим person != null && person.Name == "Doe", где второй выдает исключение, если первый член оценивается как false.


Эквивалентом булевых операторов VB And и Or, которые не используют оценку короткого замыкания, являются & и | в C #. Здесь все условия всегда будут оцениваться.

If (a = 0 Or b = 0 And c = 0) Then
    statement
End If
if (a = 0 | b = 0 & c = 0) {
    statement;
}
0 голосов
/ 13 сентября 2011

if ((a = 0 && b! = Null) || (a = 1 && c! = Null))

эквивалентно:

if ((a = 0И также б не ничего) или еще (а = 1 и с ничего))

...