Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W przypadku wystąpienia kilku operacji w wyrażeniu każda część jest obliczana i rozpoznawana w wstępnie określonej kolejności o nazwie pierwszeństwo operatora.
Reguły pierwszeństwa
Gdy wyrażenia zawierają operatory z więcej niż jednej kategorii, są oceniane zgodnie z następującymi regułami:
Operatory arytmetyczne i łączenia mają kolejność pierwszeństwa opisaną w poniższej sekcji, a wszystkie mają większy pierwszeństwo niż operatory porównania, logiczne i bitowe. Wyższy priorytet oznacza, że te operatory są oceniane jako pierwsze.
Wszystkie operatory porównania mają równe pierwszeństwo, a wszystkie mają większy pierwszeństwo niż operatory logiczne i bitowe, ale niższe pierwszeństwo niż operatory arytmetyczne i łączenia.
Operatory logiczne i bitowe mają kolejność pierwszeństwa opisaną w poniższej sekcji, a wszystkie mają niższy priorytet niż arytmetyka, łączenie i operatory porównania.
Operatory o równym pierwszeństwie są obliczane od lewej do prawej w kolejności, w której są wyświetlane w wyrażeniu.
Kolejność pierwszeństwa
Operatory są oceniane w następującej kolejności pierwszeństwa. Operatory wymienione najpierw mają wyższy priorytet i są oceniane przed operatorami wymienionymi w dalszej części:
1. Operator await
Czekać
2. Operatory arytmetyczne i współbieżne
Wykładnik (^)
Tożsamość jednoargumentowa i negacja (+, –)
Mnożenie i dzielenie zmiennoprzecinkowe (*, /)
Dzielenie całkowite (\)
Arytmetyka modułowa (Mod)
Dodawanie i odejmowanie (+, –)
Łączenie ciągów (&)
Przesunięcie bitowe arytmetyczne (<<, >>)
3. Operatory porównania
Wszystkie operatory porównania (=, <>, <<=>>=Is, IsNot, , Like...) TypeOfIs
4. Operatory logiczne i bitowe
Negacja (Not)
Połączenie (And, AndAlso)
Rozłączenie inkluzywne (Or, OrElse)
Wyłączny rozsyłanie (Xor)
Komentarze
Operator = jest tylko operatorem porównania równości, a nie operatorem przypisania.
Operator łączenia ciągów (&) nie jest operatorem arytmetycznym, ale w pierwszeństwie jest grupowany z operatorami arytmetycznymi.
Operatory Is i IsNot to operatory porównania odwołań do obiektów. Nie porównują one wartości dwóch obiektów; sprawdzają tylko, czy dwie zmienne obiektu odwołują się do tego samego wystąpienia obiektu.
Zespolenie
Gdy operatory o równym pierwszeństwie pojawiają się razem w wyrażeniu, na przykład mnożenie i dzielenie, kompilator ocenia każdą operację, gdy napotka ją od lewej do prawej. Poniższy przykład ilustruje to.
Dim n1 As Integer = 96 / 8 / 4
Dim n2 As Integer = (96 / 8) / 4
Dim n3 As Integer = 96 / (8 / 4)
Pierwsze wyrażenie oblicza podział 96 / 8 (co powoduje 12), a następnie podział 12 / 4, co powoduje trzy. Ponieważ kompilator ocenia operacje n1 od lewej do prawej, ocena jest taka sama, gdy ta kolejność jest jawnie wskazana dla elementu n2. Oba n1 i n2 mają wynik trzech. Z kolei n3 wynik ma wartość 48, ponieważ nawiasy wymuszają, aby kompilator oceniał wartość 8 /4 jako pierwszy.
Ze względu na to zachowanie, operatory są mówi się, że pozostają asocjacyjne w Visual Basic.
Zastępowanie pierwszeństwa i asocjacji
Nawiasy umożliwiają wymuszenie oceny niektórych części wyrażenia przed innymi. Może to zastąpić zarówno kolejność pierwszeństwa, jak i lewej asocjacji. Visual Basic zawsze wykonuje operacje ujęte w nawiasy przed tymi zewnętrznymi. Jednak w nawiasach zachowuje zwykły pierwszeństwo i kojarzenie, chyba że w nawiasach są używane nawiasy. Poniższy przykład ilustruje to.
Dim a, b, c, d, e, f, g As Double
a = 8.0
b = 3.0
c = 4.0
d = 2.0
e = 1.0
f = a - b + c / d * e
' The preceding line sets f to 7.0. Because of natural operator
' precedence and associativity, it is exactly equivalent to the
' following line. Division and multiplication (/, *) have higher
' precedence than addition and subtraction (+, -), so c / d * e
' is evaluated first, then the addition and subtraction from left to right.
f = (a - b) + ((c / d) * e)
' The following line overrides the natural operator precedence
' and left associativity.
g = (a - (b + c)) / (d * e)
' The preceding line sets g to 0.5.