Operatory

sesef

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:

     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 </sup>= 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 symetryczna0x04</sup>0x01
<<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)
            {
                string text = (string)obj;
                //dalsze dzialania na text
            }

od wersji C# 6.0 operator is zostal lekko usprawniony i teraz w przypadku gdy zwraca true, potwierza ze konwersja miedzy typami jest mozliwa, zwraca true oraz od razu konwertuje obiekt na dany typ, przykład:

            string napis = "Ala ma kota";
            object obj = (object)napis;
            if (obj is string text)
            {
                //można odrazu dzialac na text
            }

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));
}

1 komentarz

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