Skrócona forma delegatów, czyli metoda inline nazywana funkcją anonimową, to nie tylko zwięzły zapis, ale i kontekst dostarczany przez kompilator. Umożliwiają one szybsze i bardziej intuicyjne tworzenie kodu, pozwalając programiście na bezpośrednie umieszczanie logiki tam, gdzie jest potrzebna, bez konieczności definiowania osobnych metod.
Discover
Klasa powinna mieć tylko jeden powód do zmiany. Brzmi banalnie, ale wystarczy jeden dziennik, który sam siebie zapisuje do pliku, żeby zobaczyć, dlaczego to ważne.
Discover
Referencja do metody, czyli Delegate, w praktyce pozwala na dynamiczne przypisywanie i wywoływanie metod. Aby stworzyć delegata, definiujesz typ delegata odpowiadający sygnaturze metody, a następnie przypisujesz do niego metodę. Wywołanie delegata jest równoznaczne z wywołaniem metody, do której się odnosi.
Podstawą języka C# jest statyczne określanie typów, jednak w pewnych sytuacjach, dzięki typowi dynamic, język pozwala na bardziej dynamiczne wykorzystanie, co posiada specjalne przywileje u CLR, umożliwiając wykonanie operacji niedostępnych dla innych typów w trakcie kompilacji.
SOLID to pięć zasad projektowania obiektowego, które pojawiły się na początku lat 2000. To nie przepisa na idealny kod — są drogowskazami, które pomagają pisać oprogramowanie łatwiejsze w utrzymaniu.
Discover
Kowariancja i kontrawariancja w C# to mechanizmy kontrolujące, jak typy generyczne mogą być konwertowane. Dowiedz się, dlaczego IEnumerable<Rectangle> można przekazać jako IEnumerable<Square>, ale ICollection<Rectangle> już nie. Poznaj słowa kluczowe out i in, które decydują o bezpieczeństwie konwersji typów.
Krótka notatka dotycząca klas częściowych, zawierająca informacje jak korzystać z partial oraz gdzie są wykorzystywane, podkreślając, że umożliwiają one rozdzielenie definicji klasy na kilka plików, co jest szczególnie przydatne w narzędziach generujących kod, takich jak Visual Studio przy tworzeniu interfejsów użytkownika w WinForms.
Cały czas w tematyce obiektowości. Notatka opisuje mechanizm inicjalizacji obiektów z wykorzystaniem konstruktorów wraz z zastosowaniem base oraz this, podkreślając, że konstruktory nie są dziedziczone, ale mogą być wywoływane w klasach pochodnych, co pozwala na właściwe zainicjowanie obiektów w hierarchii dziedziczenia.
Kontynuacją notatek dotyczących dziedziczenia są metody wirtualne oraz abstrakcyjne, czyli takie, których implementacja może zostać nadpisana przez klasy pochodne, umożliwiając elastyczne dostosowanie zachowania obiektów w hierarchii klas.
Discover
Dziedziczenie, czyli wielokrotne stosowanie raz napisanego kodu jest popularnym mechanizmem stosowanym w wielu językach programowania obiektowego, również C#. To podejście pozwala na efektywne zarządzanie i rozwijanie kodu, zwiększając jego ponowną re-użyteczność.
Discover