• O WordPressie
    • WordPress.org
    • Dokumentacja
    • Naucz się WordPressa
    • Pomoc techniczna
    • Uwagi
  • Zaloguj się
Marek Zając Marek Zając
  • contact@zajacmarek.com Zapraszam do kontaktu
  • Strona główna
  • O mnie
  • Kursy
  • Konsultacje
  • Kanał Youtube
  • 10 września 2014
  • Marek Zając
  • 2 Comments

C# Tips – operator ??

Pierwszy z serii krótkich wpisów-wskazówek dotyczących C#.

Zdarza Ci się, że musisz zwrócić albo przypisać jakąś referencję, a jeśli ma wartość null najpierw tworzysz dla niej nową instancję obiektu, np. tak jak w poniższym przykładzie?

//...
if(value == null)
{
    value = new Object();
}

return value;

 Jeśli tak to w języku C# istnieje operator ?? (podwójny znak zapytania), który pozwala skrócić ten zapis do jednej linii. Jego użycie wygląda następująco:

//...
return value ?? new Object();

 Jeśli value jest różne od null to zostanie zwrócona jego wartość natomiast w przeciwnym wypadku zwrócona będzie wartość umieszczona po prawej stronie operatora ??.

Dodatkowo jeśli value będzie używane kilkukrotnie (np. jest polem klasy i jest zwracana przez metodę tej klasy) i tylko przy pierwszym użyciu chcesz przypisać jej nowy obiekt możesz to zrobić w ten sposób:

//...
return value ?? value = new Object();

 Teraz w przypadku kiedy value ma przy pierwszym wykonaniu tej linii wartość null najpierw zostanie utworzony i przypisany do niej nowy obiekt, a następnie zawartość value będzie zwrócona. Kiedy kolejny raz będzie wykonywany ten kod (np. funkcja zawierająca powyższą linię i będąca częścią klasy, w której value jest polem będzie ponownie wywołana) to zwrócona będzie poprzednio przypisana wartość zmiennej value.

Related Posts
  • Powrót do Prostoty: Lekcje z Boiling Frogs 2025 18 marca 2025
  • Vibe Coding: 5 Złotych Zasad dla Nieoprogramistów Tworzących Aplikacje z AI 18 marca 2025
  • Niecały projekt musi być elastyczny przy dużym ruchu 25 marca 2024
2 komentarze
  1. Reply
    FoTeL 1 kwietnia 2016

    A ja spotkałem się z takim zapisem

    return value ?? value = value = new Object();

    Jak go rozumieć?

    • Reply
      Marek Zając 1 kwietnia 2016

      Z zapisem, który podałeś jeszcze nigdy się nie spotkałem, ale bardzo możliwe, że powoduje on nie tylko zwrócenie new Object() w razie jak value jest null, ale też przypisuje ten Object do value.

Leave a Comment Cancel Comment

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Copyright 2020 Bizix, All rights reserved.
  • POLITYKA PRYWATNOŚCI I PLIKÓW COOKIES