Operatory C#C# Operators

C# zawiera wielu operatorów, które są symbole, które określają, jakie operacje (matematyczne, indeksowania, wywołanie funkcji itp.) w celu wykonania w wyrażeniu.C# provides many operators, which are symbols that specify which operations (math, indexing, function call, etc.) to perform in an expression. Możesz przeciążenia wielu operatorów, aby zmienić ich znaczenia w przypadku zastosowania do typu zdefiniowanego przez użytkownika.You can overload many operators to change their meaning when applied to a user-defined type.

Operacje na typy całkowite (takich jak ==, !=, <, >, &, |) są zwykle jest dozwolony w wyliczeniu (enum) typów.Operations on integral types (such as ==, !=, <, >, &, |) are generally allowed on enumeration (enum) types.

Poniższe rozdziały zawierają listę operatory C# uruchamianie o najwyższym priorytecie do najniższego.The sections below list the C# operators starting with the highest precedence to the lowest. Operatory w każdej sekcji udostępnianie na tym samym poziomie priorytetu.The operators within each section share the same precedence level.

Operatory podstawowePrimary Operators

Są to najwyższy pierwszeństwo operatorów.These are the highest precedence operators.

x.y — dostęp do elementu członkowskiego.x.y – member access.

x?. y — dostęp warunkowy element członkowski o wartości null.x?.y – null conditional member access. Zwraca null Jeśli lewego operandu daje w wyniku null.Returns null if the left-hand operand evaluates to null.

x? [y] -dostępu warunkowego indeks o wartości null.x?[y] - null conditional index access. Zwraca null Jeśli lewego operandu daje w wyniku null.Returns null if the left-hand operand evaluates to null.

f(x) — wywołania funkcji.f(x) – function invocation.

[x] — indeksowania obiektu agregacji.a[x] – aggregate object indexing.

x ++ — przyrostka inkrementacji.x++ – postfix increment. Zwraca wartość x, a następnie aktualizuje lokalizację magazynu o wartości x, które jest większe (zazwyczaj dodaje całkowitą 1).Returns the value of x and then updates the storage location with the value of x that is one greater (typically adds the integer 1).

x-- — dekrementacji przyrostka.x-- – postfix decrement. Zwraca wartość x, a następnie aktualizuje lokalizację magazynu o wartości x, które jest mniej (zazwyczaj odejmuje całkowitą 1).Returns the value of x and then updates the storage location with the value of x that is one less (typically subtracts the integer 1).

nowe — podczas tworzenia wystąpienia typu.new – type instantiation.

TypeOf — zwraca Type obiekt reprezentujący argument.typeof – returns the Type object representing the operand.

zaznaczone — umożliwia przepełnienie sprawdzanie operacji liczby całkowitej.checked – enables overflow checking for integer operations.

Zaznaczenie opcji — wyłącza przepełnienie sprawdzanie operacji liczby całkowitej.unchecked – disables overflow checking for integer operations. Jest to domyślne zachowanie kompilatora.This is the default compiler behavior.

Default(T) — tworzy domyślną wartość typu T.default(T) – produces the default value of type T.

Delegowanie — deklaruje i zwraca wystąpienie obiektu delegowanego.delegate – declares and returns a delegate instance.

sizeof — zwraca rozmiar w bajtach argumentu typu.sizeof – returns the size in bytes of the type operand.

-> — wskaźnik dereferencji połączone z dostęp do elementu członkowskiego.-> – pointer dereferencing combined with member access.

Operatory jednoargumentoweUnary Operators

Tych operatorów mają wyższy priorytet niż następnej sekcji i niższy priorytet niż poprzedniej sekcji.These operators have higher precedence than the next section and lower precedence than the previous section.

+ x — zwraca wartość x.+x – returns the value of x.

-x — negacji liczbowych.-x – numeric negation.

!x — logiczny negacji.!x – logical negation.

~ x — dopełnienia bitowego.~x – bitwise complement.

++ x — prefiks przyrostu.++x – prefix increment. Zwraca wartość x po zaktualizowaniu lokalizacji magazynu o wartości x, które jest większe (zazwyczaj dodaje całkowitą 1).Returns the value of x after updating the storage location with the value of x that is one greater (typically adds the integer 1).

--x — prefiks zmniejszenie.--x – prefix decrement. Zwraca wartość x po zaktualizowaniu lokalizacji magazynu o wartości x, które jest mniej (zazwyczaj odejmuje całkowitą 1).Returns the value of x after updating the storage location with the value of x that is one less (typically subtracts the integer 1).

[T] x — typ rzutowania.(T)x – type casting.

await — oczekujące na Task.await – awaits a Task.

& x — adres.&x – address of.

* x — usuwania odwołań.*x – dereferencing.

Operatory mnożneMultiplicative Operators

Tych operatorów mają wyższy priorytet niż następnej sekcji i niższy priorytet niż poprzedniej sekcji.These operators have higher precedence than the next section and lower precedence than the previous section.

x * y — mnożenia.x * y – multiplication.

x / y — dzielenia.x / y – division. Jeśli argumenty są liczbami całkowitymi, wyniku jest liczbą całkowitą obcięty w kierunku zera (na przykład -7 / 2 is -3).If the operands are integers, the result is an integer truncated toward zero (for example, -7 / 2 is -3).

x % y — pozostałe.x % y – remainder. Argumenty operacji są liczbami całkowitymi, to zwraca resztę podziału x przez y.If the operands are integers, this returns the remainder of dividing x by y. Jeśli q = x / y i r = x % y, następnie x = q * y + r.If q = x / y and r = x % y, then x = q * y + r.

Operatory addytywneAdditive Operators

Tych operatorów mają wyższy priorytet niż następnej sekcji i niższy priorytet niż poprzedniej sekcji.These operators have higher precedence than the next section and lower precedence than the previous section.

x + y — Dodawanie.x + y – addition.

x-y — odejmowanie.x – y – subtraction.

Operatory przesunięciaShift Operators

Tych operatorów mają wyższy priorytet niż następnej sekcji i niższy priorytet niż poprzedniej sekcji.These operators have higher precedence than the next section and lower precedence than the previous section.

x << y — przesunięcia bitów w lewo i wypełnienie zera po prawej stronie.x << y – shift bits left and fill with zero on the right.

x >> y — shift liczby bitów w prawo.x >> y – shift bits right. Jeśli lewy operand jest int lub long, a następnie po lewej stronie bity są wypełnione z bitem.If the left operand is int or long, then left bits are filled with the sign bit. Jeśli lewy operand jest uint lub ulong, a następnie po lewej stronie bity są wypełniane zero.If the left operand is uint or ulong, then left bits are filled with zero.

Operatory relacyjne i testowania typuRelational and Type-testing Operators

Tych operatorów mają wyższy priorytet niż następnej sekcji i niższy priorytet niż poprzedniej sekcji.These operators have higher precedence than the next section and lower precedence than the previous section.

x < y — mniej niż (wartość true, jeśli x jest mniejsza niż y).x < y – less than (true if x is less than y).

x > y — większa niż (wartość true, jeśli x jest większa niż y).x > y – greater than (true if x is greater than y).

x <= y — mniejsze niż lub równe.x <= y – less than or equal to.

x > = y — większa niż lub równe.x >= y – greater than or equal to.

jest — wpisz zgodności.is – type compatibility. Zwraca wartość PRAWDA, jeśli obliczane lewy operand mogą być rzutowane na typ określony w prawy operand (typ statyczny).Returns true if the evaluated left operand can be cast to the type specified in the right operand (a static type).

jako — konwersja typu.as – type conversion. Zwraca lewy operand rzutowany na typ określony przez prawy operand (typ statyczny), ale as zwraca null gdzie (T)x spowoduje zgłoszenie wyjątku.Returns the left operand cast to the type specified by the right operand (a static type), but as returns null where (T)x would throw an exception.

Operatory równościEquality Operators

Tych operatorów mają wyższy priorytet niż następnej sekcji i niższy priorytet niż poprzedniej sekcji.These operators have higher precedence than the next section and lower precedence than the previous section.

x == y — równości.x == y – equality. Domyślnie dla odwołania do typów innych niż string, to zwraca odwołanie równości (test tożsamości).By default, for reference types other than string, this returns reference equality (identity test). Jednak można przeciążać typy ==, więc jeśli Twoje celem jest, aby sprawdzić tożsamość, najlepiej użyć ReferenceEquals metoda object.However, types can overload ==, so if your intent is to test identity, it is best to use the ReferenceEquals method on object.

x! = y — jest nierówne.x != y – not equal. Zobacz komentarz dotyczący ==.See comment for ==. Jeśli typem overloads ==, a następnie go muszą przeciążać !=.If a type overloads ==, then it must overload !=.

Operator logiczny ANDLogical AND Operator

Ten operator ma wyższy priorytet niż następnej sekcji i niższy priorytet niż poprzedniej sekcji.This operator has higher precedence than the next section and lower precedence than the previous section.

x & y — logicznych lub bitowego koniunkcji binarnej.x & y – logical or bitwise AND. Zazwyczaj służy ono z typami liczb całkowitych i enum typów.You can generally use this with integer types and enum types.

Logiczne XOR — OperatorLogical XOR Operator

Ten operator ma wyższy priorytet niż następnej sekcji i niższy priorytet niż poprzedniej sekcji.This operator has higher precedence than the next section and lower precedence than the previous section.

x ^ y — logicznych lub bitowego XOR.x ^ y – logical or bitwise XOR. Zazwyczaj służy ono z typami liczb całkowitych i enum typów.You can generally use this with integer types and enum types.

Logiczny OR OperatorLogical OR Operator

Ten operator ma wyższy priorytet niż następnej sekcji i niższy priorytet niż poprzedniej sekcji.This operator has higher precedence than the next section and lower precedence than the previous section.

x | y — logicznych lub bitowego OR.x | y – logical or bitwise OR. Zazwyczaj służy ono z typami liczb całkowitych i enum typów.You can generally use this with integer types and enum types.

Operator warunkowy ANDConditional AND Operator

Ten operator ma wyższy priorytet niż następnej sekcji i niższy priorytet niż poprzedniej sekcji.This operator has higher precedence than the next section and lower precedence than the previous section.

x & & y — operatora logicznego AND.x && y – logical AND. Jeśli pierwszy argument operacji nie jest spełniony, następnie C# nie może oszacować drugiego argumentu operacji.If the first operand evaluates to false, then C# does not evaluate the second operand.

Warunkowy OR — OperatorConditional OR Operator

Ten operator ma wyższy priorytet niż następnej sekcji i niższy priorytet niż poprzedniej sekcji.This operator has higher precedence than the next section and lower precedence than the previous section.

x | | y — operatora logicznego OR.x || y – logical OR. Jeśli pierwszy argument operacji daje w wyniku wartość true, następnie C# nie może oszacować drugiego argumentu operacji.If the first operand evaluates to true, then C# does not evaluate the second operand.

Łączenie null — OperatorNull-coalescing Operator

Ten operator ma wyższy priorytet niż następnej sekcji i niższy priorytet niż poprzedniej sekcji.This operator has higher precedence than the next section and lower precedence than the previous section.

x? y — zwraca x jeśli ją ma wartość inną niżnull; w przeciwnym razie zwraca y.x ?? y – returns x if it is non-null; otherwise, returns y.

Operator warunkowyConditional Operator

Ten operator ma wyższy priorytet niż następnej sekcji i niższy priorytet niż poprzedniej sekcji.This operator has higher precedence than the next section and lower precedence than the previous section.

t? x: y — Jeśli test t daje w wyniku wartość true, a następnie ocenić i zwracać x; w przeciwnym razie ocenić i zwracać y.t ? x : y – if test t evaluates to true, then evaluate and return x; otherwise, evaluate and return y.

Przypisanie i operatory LambdaAssignment and Lambda Operators

Tych operatorów mają wyższy priorytet niż następnej sekcji i niższy priorytet niż poprzedniej sekcji.These operators have higher precedence than the next section and lower precedence than the previous section.

x = y — przypisania.x = y – assignment.

x += y — przyrostu.x += y – increment. Dodaj wartość y wartość x, zapisać wynik w xi zwraca nową wartość.Add the value of y to the value of x, store the result in x, and return the new value. Jeśli x wyznacza event, następnie y musi mieć odpowiednią funkcję, która C# dodaje jako program obsługi zdarzeń.If x designates an event, then y must be an appropriate function that C# adds as an event handler.

x-= y — zmniejszyć.x -= y – decrement. Odejmowanie wartość y od wartości x, zapisać wynik w xi zwraca nową wartość.Subtract the value of y from the value of x, store the result in x, and return the new value. Jeśli x wyznacza event, następnie y musi mieć odpowiednią funkcję, która C# usuwa jako program obsługi zdarzeńIf x designates an event, then y must be an appropriate function that C# removes as an event handler

x * = y — przypisania mnożenia.x *= y – multiplication assignment. Należy pomnożyć wartość y wartość x, zapisać wynik w xi zwraca nową wartość.Multiply the value of y to the value of x, store the result in x, and return the new value.

x / = y — przypisania dzielenia.x /= y – division assignment. Podziel wartość x przez wartość y, zapisać wynik w xi zwraca nową wartość.Divide the value of x by the value of y, store the result in x, and return the new value.

x % = y — remainder przypisania.x %= y – remainder assignment. Podziel wartość x przez wartość y, przechowywać resztę w xi zwraca nową wartość.Divide the value of x by the value of y, store the remainder in x, and return the new value.

x & = y — i przypisania.x &= y – AND assignment. WARTOŚĆ y z wartością x, zapisać wynik w xi zwraca nową wartość.AND the value of y with the value of x, store the result in x, and return the new value.

x |= y — przypisanie OR.x |= y – OR assignment. LUB wartość y z wartością x, zapisać wynik w xi zwraca nową wartość.OR the value of y with the value of x, store the result in x, and return the new value.

x ^ = y — XOR przypisania.x ^= y – XOR assignment. XOR wartość z y z wartością x, zapisać wynik w xi zwraca nową wartość.XOR the value of y with the value of x, store the result in x, and return the new value.

x << = y — przypisania przesunięcia w lewo.x <<= y – left-shift assignment. Wartość przesunięcia x po lewej stronie przez y miejsca przechowywania wyników w xi zwraca nową wartość.Shift the value of x left by y places, store the result in x, and return the new value.

x >> = y — przypisania przesunięcia w prawo.x >>= y – right-shift assignment. Wartość przesunięcia x prawo y miejsca przechowywania wyników w xi zwraca nową wartość.Shift the value of x right by y places, store the result in x, and return the new value.

=> — deklaracji lambda.=> – lambda declaration.

Przepełnienie arytmetyczneArithmetic Overflow

Operatory arytmetyczne (+, - , * , / ) może dostarczyło wyników, które są poza zakresem możliwe wartości liczbowe rodzaju.The arithmetic operators (+, -, *, /) can produce results that are outside the range of possible values for the numeric type involved. Należy zapoznać się w sekcji na konkretnym operatorze, aby uzyskać więcej informacji, ale w ogólne:You should refer to the section on a particular operator for details, but in general:

  • Albo zgłasza przepełnienie arytmetyczne całkowitą OverflowException lub odrzuca najbardziej znaczących bitów wyniku.Integer arithmetic overflow either throws an OverflowException or discards the most significant bits of the result. Dzielenie liczby całkowitej przez zero zawsze zwraca DivideByZeroException.Integer division by zero always throws a DivideByZeroException.

    Gdy wystąpi przepełnienie liczby całkowitej, co się stanie, zależy od kontekstu wykonywania, który może być zaznaczenie.When integer overflow occurs, what happens depends on the execution context, which can be checked or unchecked. W kontekście zaznaczone OverflowException jest generowany.In a checked context, an OverflowException is thrown. W kontekście niezaznaczone najbardziej znaczących bitów wyniku zostaną odrzucone i kontynuuje wykonywanie.In an unchecked context, the most significant bits of the result are discarded and execution continues. W związku z tym C# umożliwia wybór obsługi lub ignorowanie przepełnienia.Thus, C# gives you the choice of handling or ignoring overflow. Domyślnie operacje arytmetyczne występują w niezaznaczone kontekstu.By default, arithmetic operations occur in an unchecked context.

    Oprócz operacji arytmetycznej, rzutowania typu całkowitego — do całkowitych typów może spowodować przepełnienie (np. gdy rzutowania długi do int) i wymagają wykonania zaznaczać lub usuwać zaznaczenia.In addition to the arithmetic operations, integral-type to integral-type casts can cause overflow (such as when you cast a long to an int), and are subject to checked or unchecked execution. Jednak operatory bitowe i operatory przesunięcia nigdy nie spowodować przepełnienie.However, bitwise operators and shift operators never cause overflow.

  • Nigdy nie zgłasza wyjątek zmiennoprzecinkowy przepełnienia arytmetycznego lub dzielenie przez zero, ponieważ typy zmiennoprzecinkowe są oparte na IEEE 754 i tak mają postanowienia reprezentujący nieskończoności i NaN (nieliczbową).Floating-point arithmetic overflow or division by zero never throws an exception, because floating-point types are based on IEEE 754 and so have provisions for representing infinity and NaN (Not a Number).

  • Decimal zawsze zgłasza wyjątek przepełnienia arytmetycznego OverflowException.Decimal arithmetic overflow always throws an OverflowException. Decimal dzielenie przez zero zawsze zwraca DivideByZeroException.Decimal division by zero always throws a DivideByZeroException.

Zobacz teżSee Also

Odwołanie w C#C# Reference
Przewodnik programowania w języku C#C# Programming Guide
C# operatory z możliwością przeciążeniaC# Overloadable Operators
Słowa kluczowe języka C#C# Keywords