Programowanie w języku C#

Operatory

  • 2016-11-01 22:22
  • 2 komentarze
  • 19912 odsłon
  • 4,5/6
Operator to jeden lub kilka znaków (zazwyczaj nie będących literami), które mają specjalne znaczenie w języku programowania. W C# wyróżniamy następujące operatory:

Spis treści

          1 Operatory przypisania
          2 Operatory arytmetyczne
          3 Operatory relacji
          4 Operatory bitowe
          5 Operatory logiczna
          6 Operator konkatenacji
          7 Operatory jednokrotnego zwiększenia i zmniejszenia
          8 Operator wyrażenia warunkowego (?:)
          9 Operator łączący wartości null (??)
          10 Operator dostępu warunkowego (?.)
          11 Operator is
          12 Operator as
          13 Operator new
          14 Operator sizeof
          15 Operator typeof
          16 Operator nameof


Operatory przypisania


Operator przypisania jak sama nazwa wskazuje przypisują jakąś wartość do zmiennej.

OperatorOpisPrzykładRównoznaczne
=Zwykłe przypisaniezmienna = 1
+=Dodawanie z przypisaniemzmienna += 5zmienna = zmienna + 5
-=Odejmowanie z przypisaniemzmienna -= 2zmienna = zmienna - 2
*=Mnożenie z przypisaniemzmienna *= 4zmienna = zmienna * 4
/=Dzielenie z przypisaniemzmienna /= 3zmienna = zmienna / 3
%=Reszta z dzielenia z przypisaniemzmienna %= 5zmienna = zmienna % 5
&=Iloczyn bitowy z przypisaniemzmienna &= true
|=Suma bitowa z przypisaniemzmienna |= true
=Bitowa różnica symetryczna z przypisaniemzmienna = true
<<=Przesunięcie w lewo z przypisaniemzmienna <= 3
>>=Przesunięcie w prawo z przypisaniemzmienna >>= 3


Operatory arytmetyczne


Operatory służące do wykonywania prostych działań matematycznych.

OperatorOpisPrzykład
+Dodawanie2 + 2
-Odejmowanie5 - 2
*Mnożenie3 * 5
/Dzielenie20 / 4
%Reszta z dzielenia7 % 4


Operatory relacji


Operatory służą do porównania dwóch zmiennych i zawsze dają wynik true (prawda) lub false (fałsz).

OperatorOpisPrzykład
==Równy2 == 2
!=Różny5 != 2
<Mniejszy3 < 5
>Większy20 > 4
<=Mniejszy równyzmienna <= 1
>=Większy równyzmienna >= 0



Operatory bitowe


Operatory służą do wykonywania operacji na bitach.

OperatorOpisPrzykład
&Iloczyn logiczny0x05 & 0x06
|Suma logiczna0x05 | 0x06
~Negacja logiczna~0x06
Logiczna różnica symetryczna0x040x01
<<Przesunięcie w lewo1 < 2
>>Przesunięcie w prawo2 >> 1


Operatory logiczna


Operatory służą do łączenia wyrażen relacji.


OperatorOpisPrzykład
&&Iloczyn warunków(zmienna >= 5) && (zmienna <= 10)
||Suma warunków(zmienna == 1) || (zmienna == 5)
!Negacja warunku!(ZmiennaLogiczna)


Operator konkatenacji


Operator służy do łączenia łańcuchów.

OperatorOpisPrzykład
+Łączenie łańcuchów"Ala ma " + "kotka."


Operatory jednokrotnego zwiększenia i zmniejszenia


Operatowy zwiększają bądź zmiejszają liczbę całkowitą o 1.

OperatorOpisPrzykład
++Zwiększ o 1zmienna++, ++zmienna
--Zmniejsz o 1zmienna--, --zmienna


Kiedy operator znajduje się przed zmienna (++zmienna, --zmienna) wartość zmiennej zostanie zwiększona/zmniejszona o jeden, a następnie przekazana do wyrażenia. W wypadku kiedy operator znajduje się za zmienna (zmienna++, zmienna--) wartość zmiennej zostanie przekazana do wyrażenia a następnie zwiększona/zmniejszona o jeden.

Operator wyrażenia warunkowego (?:)


Operator zwraca jedną z dwóch wartości w zależności od wyniku warunku.

Konstrukcja:
warunek ? wyrazenie_w_przypadku_prawdy : wyrazenie_w_przypadku_falszu


Przykład:
int x = 2;
int y = 1;
double z = (x == y) ? x/y : y/x


Operator łączący wartości null (??)


Operator sprawdza czy argument po lewej stronie jest różny od null, jeśli tak zwraca go. W przeciwnym wypadku zwracany jest argument po prawej stronie.

Konstrukcja:
argument zwracany jeśli nie jest nullem ?? argument zwracany jeśli pierwszy argument jest nullem


Przykład:
public void Test()
{
    string napis = null ?? "Prawa wartość.";
    string napis2 = "Lewa wartość" ?? "Prawa wartość.";
 
    Tuple<int> krotka = Tuple.Create(5) ?? Tuple.Create(6);
    Tuple<int> krotka2 = null ?? Tuple.Create(7);
 
    Console.WriteLine(napis);
    Console.WriteLine(napis2);
    Console.WriteLine(krotka.Item1);
    Console.WriteLine(krotka2.Item1);
}


Operator dostępu warunkowego (?.)


Operator ten w przypadku używania referencji do której przypisany jest null nie rzuca wyjątku ArgumentNullException tylko zwraca null.

Porównanie
return obiekt != null ? obiekt.Wlasciwosc : null
// Jest równoznaczne temu
return obiekt?.obiekt.Wlasciwosc


Przykład:
// Wcześniej
public int ZwrocRozmiar(string napis)
{
    if (napis != null)
    {
        return napis.Length;
    }
 
    return 0;
}
// Lub
public int ZwrocRozmiar(string napis)
{
    return napis != null ? napis.Length : 0;
}
// Obecnie
public int ZwrocRozmiar(string napis)
{
    return napis?.Length ?? 0; // Połączenie z operatorem ??
}


Możemy dzięki temu uniknąć drabinek warunków sprawdzających czy w drodze do interesującego nas pola nie natrafimy na null. Operatory te możemy łączyć:
obiekt?.pole1?.pole2?.pole3 // itd


Operator is


Operator is służy do sprawdzenia czy konwersja miedzy typami może zostać wykonana.

Przykład:
string napis = "Ala ma kota";
object obj = (object)napis;
if (obj is string)
{
   //tu wykonujemy jakieś czynności
}


Operator as


Operator as służy do konwersji między typami danych.

Przykład:
string napis = "Ala ma kota";
object obj = (object)napis;
string s = obj as string;


Operator new


Operator new służy do tworzenia nowych obiektów

Przykład:
Point pt = new Point(0, 0)


Operator sizeof


Operator sizeof zwraca rozmiar obiektu podanego w parametrze w bajtach.

Przykład:
int size = sizeof(long);


Operator typeof


Operator typeof zwraca typ obiektu podanego w parametrze.

Przykład:
System.Type t = typeof(int)


Operator nameof


Operator nameof zwraca nazwę przesłanej zmiennej, metody, typu czy pola klasy jako string.

Przykład:
public void Test()
{
    int zmienna = 5;
 
    Console.WriteLine(nameof(zmienna));
    Console.WriteLine(nameof(Int32));
    Console.WriteLine(nameof(Test));
}

2 komentarze

tomekm33 2015-04-27 19:25

@nowy masz rację, zapewne literówka się wkradła.

Brak avatara
nowy 2014-01-08 23:20

w
'/=    Reszta z dzielenia z przypisaniem    zmienna %= 5'

nie powinno być '%=' zamiast '/='  ?