40-783: Praca z typem String

W dzisiejszym odcinku – typ string. W jaki sposób możemy go tworzyć? jakie najważniejsze metody nam dostarcza? Oprócz stringa, poznamy kilka innych ważnych klas do pracy na ciągach znaków, takich jak: StringBuilder, StrinWriter i StringReader. Później pomówimy sobie o konwertowaniu innych typów na string – skupimy się głównie na metodach ToString oraz String.Format. Poświęcimy trochę czasu „Composite string”, czyli notacji służącej do dokładego opisu w jaki sposób dany obiekt ma być reprezentowany jako ciąg znaków. Na koniec powiemy sobie w jaki sposób możmy się „wpiąć” w C-Sharpową infrastrukturę konwertowania do stringa, czyli o interfejsach IFormattable, IFormatProvider oraz ICustomFormatter.

Czytaj dalej 40-783: Praca z typem String

40-783: Konwersje

W dzisiejszym odcinku moich zmagań z materią C-Sharpową porozmawiamy sobie na temat wszelkiego rodzaju konwersji między typami. Zaczniemy od ogólnych rozważań na temat konwertowania: kiedy zadzieje się to automatycznie a kiedy nie; kiedy konwersja może nam sprawić problemy a kiedy napewno wszystko będzie ok. Pomówimy sobie chwilę o mechanizmie autoboxingu, który wydaje się mało ciekawym tematem, ale jest na tyle różny od tego co daje nam Java, że warto chociaż rzucić okiem. Zaraz po tym przyjrzymy się chyba jednemu z najpopularniejszych rodzajów konwersji, czyli rzutowaniu. Przy okazji tego tematu poznamy operatory is, oraz as. Zrobimy też krótki przegląd tego jakich mechanizmów konwersji dostarcza nam biblioteka standardowa aby za chwilę nauczyć się jak możemy zmusić nasze typy współpracy z nimi. Żeby tego było mało, przywitamy się z niecodziennym zjawiskiem, jakim jest typ dynamic aby na sam koniec dosłownie na moment rzucić okiem na P/Invoke oraz COM Interop – dwie techniki pozwalające na współpracę kodu C# z kodem „unmanaged”.

Jak widać temat konwersji jest całkiem pojemny. Nie ma więc co przedłużać – zaczynajmy.

Czytaj dalej 40-783: Konwersje

40-783 Keywordy związane z Reference Types

Podczas przerabiania trzeciego rozdziału książki T. Covaci, trafiłem na fragment w którym autor przedstawia nam listę najważniejszych słów kluczowych związanych z Reference Types. Moim zdaniem jest to „trochę obok” głównych tematów tego rozdziału, ale skoro postanowiłem się trzymać tej książki jako „drogowskazu” przy nauce, to niech tak będzie.  W tym artykule będzie chyba najbardziej widać jedną z idei, która przyświeca tej serii – wyszczególnianiu różnic między Javą a C#.

Czytaj dalej 40-783 Keywordy związane z Reference Types

Kwadrant Feathers’a, czyli gdzie refaktoryzować?

Parę ładnych lat temu przygotowałem wpis na temat Złożoności Cyklomatycznej McCabe’a. Pod koniec artykułu wspomniałem o narzędziu, które opiera się o tą metrykę i które pozwala nam określić w które rejony kodu powinniśmy celować planując refaktoryzację. Narzędziem tym jest tzw. Kwadrant Feathers’a. W poprzednim artykule odgrażałem się, że o kwadrancie jeszcze wspomnę, ale jakoś nie było okazji. Aż do niedawna, gdy jeden z czytelników wprost zapytał pod tamtym wpisem, kiedy napiszę coś na ten temat. No to właśnie nadszedł ten moment.

Czytaj dalej Kwadrant Feathers’a, czyli gdzie refaktoryzować?

40-783: Podstawy Typów Generycznych

Podobnie jak w Javie, C# posiada typy generyczne. Język ten nie zmusza nas jednak do parametryzowania tylko z użyciem reference types – możemy użyć też value types. Drugą znaczną różnicą jest to, że o ile w Javie nie mamy (powiedzmy) informacji o typie generycznym w runtimie – o tyle w C# taka informacja jest do wyciągniecia przez mechanizmy refleksji.

Czytaj dalej 40-783: Podstawy Typów Generycznych