C# - Operators
Een operator is een symbool dat de compiler vertelt om specifieke wiskundige of logische manipulaties uit te voeren. C# heeft een uitgebreide reeks ingebouwde operators en biedt het volgende type operators −
- Rekenkundige operatoren
- Relationele operators
- Logische operators
- Bitwise-operators
- Opdrachtoperators
- Diverse operators
In deze zelfstudie worden de rekenkundige, relationele, logische, bitsgewijze, toewijzings- en andere operatoren één voor één uitgelegd.
Rekenkundige operatoren
De volgende tabel toont alle rekenkundige operatoren die door C# worden ondersteund. Veronderstel variabele A houdt 10 en variabele B houdt 20 dan −
Voorbeelden tonen
| Operator | Beschrijving | Voorbeeld |
|---|---|---|
| + | Voegt twee operanden toe | A + B =30 |
| - | Trekt de tweede operand af van de eerste | A - B =-10 |
| * | Vermenigvuldigt beide operanden | A * B =200 |
| / | Verdeelt de teller door de teller | B / A =2 |
| % | Modulus Operator en rest van na een integer deling | B % A =0 |
| ++ | Ophogingsoperator verhoogt de gehele waarde met één | A++ =11 |
| -- | Decrement-operator verlaagt de gehele waarde met één | A-- =9 |
Relationele operators
De volgende tabel toont alle relationele operators die door C# worden ondersteund. Veronderstel variabele A houdt 10 en variabele B houdt 20, dan −
Voorbeelden tonen
| Operator | Beschrijving | Voorbeeld |
|---|---|---|
| == | Controleert of de waarden van twee operanden gelijk zijn of niet, zo ja, dan wordt de voorwaarde waar. | (A ==B) is niet waar. |
| != | Controleert of de waarden van twee operanden gelijk zijn of niet, als de waarden niet gelijk zijn, wordt de voorwaarde waar. | (A !=B) is waar. |
| > | Controleert of de waarde van de linker operand groter is dan de waarde van de rechter operand, zo ja, dan wordt de voorwaarde waar. | (A> B) is niet waar. |
| < | Controleert of de waarde van de linker operand kleiner is dan de waarde van de rechter operand, zo ja, dan wordt de voorwaarde waar. | (A |
| >= | Controleert of de waarde van de linker operand groter is dan of gelijk is aan de waarde van de rechter operand, zo ja, dan wordt de voorwaarde waar. | (A>=B) is niet waar. |
| <= | Controleert of de waarde van de linker operand kleiner is dan of gelijk is aan de waarde van de rechter operand, zo ja, dan wordt de voorwaarde waar. | (A <=B) is waar. |
Logische operators
De volgende tabel toont alle logische operators die door C# worden ondersteund. Veronderstel variabele A bevat Booleaanse waarde true en variabele B houdt Booleaanse waarde false, dan −
Voorbeelden tonen
| Operator | Beschrijving | Voorbeeld |
|---|---|---|
| && | Logische AND-operator genoemd. Als beide operanden niet nul zijn, wordt de voorwaarde waar. | (A &&B) is niet waar. |
| || | Logische OR-operator genoemd. Als een van de twee operanden niet nul is, wordt de voorwaarde waar. | (A || B) is waar. |
| ! | Logische NOT-operator genoemd. Gebruiken om de logische status van de operand om te keren. Als een voorwaarde waar is, maakt de Logische NIET-operator onwaar. | !(A &&B) is waar. |
Bitwise-operators
Bitwise-operator werkt op bits en voert bit voor bit bewerkingen uit. De waarheidstabellen voor &, | en ^ zijn als volgt −
| p | q | p &q | p | q | p ^ q |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 |
Neem aan dat als A =60; en B =13; dan zijn ze in het binaire formaat als volgt −
A =0011 1100
B =0000 1101
-------------------
A&B =0000 1100
A|B =0011 1101
A^B =0011 0001
~A =1100 0011
De Bitwise-operators die door C# worden ondersteund, staan in de volgende tabel. Neem aan dat variabele A 60 bevat en variabele B 13, dan −
Voorbeelden tonen
| Operator | Beschrijving | Voorbeeld |
|---|---|---|
| & | Binaire AND-operator kopieert een bit naar het resultaat als het in beide operanden bestaat. | (A &B) =12, dat is 0000 1100 |
| | | Binaire OR-operator kopieert een bit als het in een van beide operands voorkomt. | (A | B) =61, dat is 0011 1101 |
| ^ | Binaire XOR-operator kopieert de bit als deze in één operand is ingesteld, maar niet in beide. | (A ^ B) =49, dat is 0011 0001 |
| ~ | Binary Ones Complement Operator is unair en heeft het effect van 'flipping' bits. | (~A ) =-61, wat 1100 0011 is in het 2-complement vanwege een ondertekend binair getal. |
| << | Binaire linker shift-operator. De waarde van de linkeroperand wordt naar links verplaatst met het aantal bits dat is opgegeven door de rechteroperand. | A <<2 =240, dat is 1111 0000 |
| >> | Binaire Right Shift-operator. De waarde van de linkeroperand wordt naar rechts verplaatst met het aantal bits dat is opgegeven door de rechteroperand. | A>> 2 =15, dat is 0000 1111 |
Toewijzingsoperators
De volgende toewijzingsoperators worden ondersteund door C# −
Voorbeelden tonen
| Operator | Beschrijving | Voorbeeld |
|---|---|---|
| = | Eenvoudige toewijzingsoperator, wijst waarden toe van operanden aan de rechterkant aan operand aan de linkerkant | C =A + B wijst de waarde van A + B toe aan C |
| += | Voeg een AND-toekenningsoperator toe, het voegt de rechter operand toe aan de linker operand en wijst het resultaat toe aan de linker operand | C +=A is gelijk aan C =C + A |
| -= | Trek de AND-toekenningsoperator af, het trekt de rechter operand af van de linker operand en wijst het resultaat toe aan de linker operand | C -=A is gelijk aan C =C - A |
| *= | Vermenigvuldig EN-toewijzingsoperator, het vermenigvuldigt de rechter operand met de linker operand en wijst het resultaat toe aan de linker operand | C *=A is gelijk aan C =C * A |
| /= | Deel AND-toewijzingsoperator, het verdeelt de linker operand met de rechter operand en wijst het resultaat toe aan de linker operand | C /=A is gelijk aan C =C / A |
| %= | Modulus AND-toewijzingsoperator, het vereist modulus met behulp van twee operanden en wijst het resultaat toe aan de linkeroperand | C %=A is gelijk aan C =C % A |
| <<= | Linker shift AND toewijzingsoperator | C <<=2 is hetzelfde als C =C <<2 |
| >>= | Rechts shift AND toewijzingsoperator | C>>=2 is hetzelfde als C =C>> 2 |
| &= | Bitwise AND-toewijzingsoperator | C &=2 is hetzelfde als C =C &2 |
| ^= | bitsgewijze exclusieve OR en toewijzingsoperator | C ^=2 is hetzelfde als C =C ^ 2 |
| |= | bitsgewijze inclusief OR en toewijzingsoperator | C |=2 is hetzelfde als C =C | 2 |
Diverse operators
Er zijn weinig andere belangrijke operatoren, waaronder sizeof, typeof en ? : ondersteund door C#.
Voorbeelden tonen
| Operator | Beschrijving | Voorbeeld |
|---|---|---|
| sizeof() | Retourneert de grootte van een gegevenstype. | sizeof(int), retourneert 4. |
| typeof() | Retourneert het type van een klas. | typeof(StreamReader); |
| & | Retourneert het adres van een variabele. | &a; geeft het werkelijke adres van de variabele terug. |
| * | Aanwijzer naar een variabele. | *a; maakt een aanwijzer met de naam 'a' naar een variabele. |
| ? : | Voorwaardelijke expressie | Als de voorwaarde waar is? Dan waarde X :Anders waarde Y |
| is | Bepaalt of een object van een bepaald type is. | If(Ford is Car) // controleert of Ford een object is van de Car-klasse. |
| als | Cast zonder een uitzondering te maken als de cast mislukt. | Object obj =new StringReader("Hallo"); StringReader r =obj als StringReader; |
Operatorvoorrang in C#
De operatorprioriteit bepaalt de groepering van termen in een uitdrukking. Dit heeft invloed op de evaluatie van een uitdrukking. Bepaalde operators hebben een hogere prioriteit dan andere; de operator voor vermenigvuldigen heeft bijvoorbeeld een hogere prioriteit dan de operator voor optellen.
Bijvoorbeeld x =7 + 3 * 2; hier wordt x 13 toegewezen, niet 20 omdat operator * een hogere prioriteit heeft dan +, dus de eerste evaluatie vindt plaats voor 3*2 en vervolgens wordt 7 eraan toegevoegd.
Hier verschijnen operators met de hoogste prioriteit bovenaan de tabel, die met de laagste onderaan. Binnen een uitdrukking worden operators met een hogere prioriteit eerst geëvalueerd.
Voorbeelden tonen
| Categorie | Operator | Associativiteit |
|---|---|---|
| Postfix | () [] -> . ++ - - | Links naar rechts |
| Unair | + - ! ~ ++ - - (type)* &groottevan | Van rechts naar links |
| Multiplicatief | * / % | Links naar rechts |
| Additief | + - | Links naar rechts |
| Shift | <<>> | Links naar rechts |
| Relationeel | <<=>>= | Links naar rechts |
| Gelijkheid | ==!= | Links naar rechts |
| Bitgewijs EN | & | Links naar rechts |
| Bitwise XOR | ^ | Links naar rechts |
| Bitgewijs OF | | | Links naar rechts |
| Logisch EN | && | Links naar rechts |
| Logische OF | || | Links naar rechts |
| Voorwaardelijk | ?: | Van rechts naar links |
| Opdracht | =+=-=*=/=%=>>=<<=&=^=|= | Van rechts naar links |
| Komma | , | Links naar rechts |
C Taal