22
May

Operátor ??

V C# je zajímavý operátor. Jedná se o ‘??’. Každý asi zná (nebo aspoň slyšel o) ‘?:’, ale co ‘??’.

Operátor ?? může pomoci při používání nullable typů. Často totiž potřebujete do jiné proměnné přiřadit buď hodnotu nebo vlastní “chybovou”. Samozřejmě vše lze ošetřit pomocí ifu (jako vždy), ale proč si věc neusnadnit.

int? x = null;
int y = x ?? -1;

Tato kontrukce nám zajistí, že pokud je x nenullové, bude do y přiřazena jeho hodnota. Jinak bude přiřazeno ‘-1′. Dobré, že? ;-)

Pozn.: ‘??’ funguje samozřejmě i s referenčními typy.

There's 5 Comments So Far

  • stej
    May 22nd, 2006 at 16:13

    Nejakou chvilku zpatky jsem videl pouziti ?? u Viewstate. Sam jsem nezkousel (zatim jsme pod 1.1), ale zjednoduseni
    return ViewState["findActive"] == null ? false : (bool) ViewState["findActive"];
    na
    return ViewState["findActive"] ?? false;
    mi prijde super :)

  • stej
    May 22nd, 2006 at 16:15

    I kdyz.. jak se tak divam, zrejme tam bude jeste potreba pretypovani na bool.

  • trained.monkey
    May 23rd, 2006 at 09:17

    a na to potrebujete zvlastni operator?

    y= (x!=null?x:-1)

  • cincura.net
    May 23rd, 2006 at 09:24

    No takto to bohuzel nejde. X je typu int?, kdezto y je int. Muselo by se pouzit
    y = (x.HasValue ? x.Value : -1);
    a to uz je neprakticke, moc psani.

  • Jan Melichar
    May 23rd, 2006 at 21:28

    Tohle je jenom lidstejsi zapis
    int y = x.GetValueOrDefault(-1);

Share your thoughts, leave a comment!