Udostępnij za pośrednictwem


Operatory C#

C# zawiera duży zestaw operatorów, które są symbolami określającymi operacje do wykonania w wyrażeniu.Operacje na typach całkowitoliczbowych, takie jak ==, !=, <, >, <=, >=, binary +, binary -, ^, &,|, ~, ++, -- i sizeof() są ogólnie dozwolone w wyliczeniach.Ponadto wiele operatorów może być przeciążonych przez użytkownika, zmieniając w ten sposób ich znaczenie, gdy są stosowane do typu zdefiniowanego przez użytkownika.

Poniższa lista zawiera listę operatorów języka C# pogrupowanych według hierarchii ważności.Operatory w każdej grupie mają równy priorytet.

Kategoria operatora

Operatory

Podstawowy

x.y

f(x)

a[x]

x++

x--

nowy

Instrukcja typu

sprawdzono

niezaznaczony

domyślnie(T)

obiekt delegowany

sizeof

->

Jednoargumentowy

+x

-x

!x

~x

++x

--x

(T)x

czekają na

&x

*x

Mnożący

x * y

x / y

x % y

Dodatek

x + y

x - y

Shift

x << y

x >> y

Relacyjne i badania typu

x < y

x > y

x <= y

x >= y

wynosi

jako

Równość

x == y

x != y

Logiczna AND

x & y

Logiczna XOR

x ^ y

Logiczne OR

x | y

Warunkowy AND

x && y

Warunkowy OR

x || y

Łączenie zerowe

x ?? y

Warunkowy

?:

Wyrażenie lambda i przypisanie

x = y

x += y

x -= y

x *= y

x /= y

x %= y

x &= y

x |= y

x ^= y

x <<= y

x >>= y

=>

Przepełnienie arytmetyczne

Operatory arytmetyczne (+, -, *, /) mogą produkować wyniki, które wykraczają poza zakres możliwych wartości dla typu liczbowego.Powinieneś odwołać się do rozdziału mówiącego o danym operatorze, aby uzyskać szczegółowe informacje, ale zasadniczo:

  • Arytmetyka przepełnienia liczb całkowitych zgłasza wyjątek OverflowException lub odrzuca najbardziej znaczące bity wyniku.Dzielenie liczby całkowitej przez zero zawsze generuje wyjątek DivideByZeroException.

  • Przepełnienie arytmetyczne wartościami zmiennoprzecinkowymi lub dzielenie przez zero nigdy nie zgłasza wyjątku, ponieważ typy zmiennoprzecinkowe są oparte na standardzie IEEE 754, dlatego mają mechanizmy reprezentowania nieskończoności i wartości NaN („nie jest liczbą”).

  • Dziesiętny przepełnienie arytmetyczne zawsze wyrzuca OverflowException.Dzielenie dziesiętne przez zero zawsze generuje wyjątek DivideByZeroException.

Gdy występuje przepełnienie liczby całkowitej, to, co się stanie, zależy od kontekstu wykonywania, który może być zaznaczony lub niezaznaczony.W kontekście sprawdzanym jest generowany wyjątek OverflowException.W kontekście niesprawdzanym najbardziej znaczące bity wyniku są odrzucane, a wykonywanie jest kontynuowane.Tak więc C# umożliwia wybranie obsługi lub zignorowanie przepełnienie.

Oprócz operatorów arytmetycznych również rzutowania typów całkowitoliczbowych na typy całkowitoliczbowe mogą spowodować przepełnienie, na przykład rzutowanie typu long na typ int, i podlegają wykonaniu sprawdzanemu lub niesprawdzanemu.Jednakże operatory bitowe i operatory przesunięcia nigdy nie powodują przepełnienia.

Zobacz też

Informacje

Operatory z możliwością przeciążenia (Przewodnik programowania w języku C#)

Słowa kluczowe języka C#

Koncepcje

Przewodnik programowania w języku C#

Inne zasoby

Odwołanie w C#

Visual C#