Q&A – Różnica pomiędzy metodami Convert.ToString a ToString

Najważniejsza różnica pomiędzy metodami Convert.ToString a ToString polega na tym jak działają, gdy pojawia się null.

Weźmy przykładowy kod:

Tutaj, gdy wartością zmiennej name będzie null metoda Convert.ToString(null) po prostu zwróci nam null.

Z kolei, gdy użyjemy ToString jak poniżej:

Wystąpi wyjątek, gdyż metoda ToString() nie radzi sobie w tym przypadku.

Generalnie dotyczy to wszystkich metod tego typu z klasy Convert (ToBoolean, ToDecimal, ToInt64 itd).

Q&A – Prywatny konstruktor w C# – kiedy używać i co nam daje?

Po pierwsze prywatny konstruktor w C# uniemożliwia nam utworzenie instancji klasy.
Po drugie – uniemożliwia dziedziczenie po niej.

Do czego więc może się przydać?
Otóż przydać się może, gdy chcemy utworzyć klasę, która zawierać będzie tylko metody statyczne i nie potrzebujemy, a wręcz nie chcemy, by ktokolwiek tworzył instancje tejże klasy.

Q&A – Czy można przeładować metody Action w ASP.NET MVC, jak?

Otóż na pytanie czy można przeładować metody Action w ASP.NET MVC – tak, można. A teraz powiemy sobie jak. Pierwsze co zgodnie z tym co zwykliśmy robić przychodzi nam zapewne do głowy to coś takiego:

Mianowicie mamy tutaj dwie metody o różnych sygnaturach. Zdawałoby się, że jest w porządku. Jednak próba odwołania się do tego kontrolera zaowocuje następującym błędem:
Overload error
Aplikacja nie jest w stanie rozróżnić, którą metodę wywołać.

Z pomocą przychodzi nam tutaj atrybut pozwalający określić „ActionName”. Zobaczmy jak wówczas wyglądałby kod:

Wówczas odwołanie do pierwszej metody wyglądałoby następująco i dawałoby następujący rezultat:
Overload result
Natomiast do drugiej:
Overload result

Możemy zauważyć iż w pierwszym przypadku ścieżka się nie zmieniła. Natomiast w drugim mamy w URL dodatkowy parametr – jest nim właśnie ActionName, który pozwala aplikacji rozróżnić, którą metodę wywołać.

Q&A – Co się stanie, gdy w bloku finally wystąpi wyjątek

Powiedzmy, ze mamy taki oto kod:

Efektem wykonania tego kodu będzie coś takiego:

Try block exception
Before exception in finally block
Finally block exception

Jak widać, wydarzą się następujące rzeczy, gdy pojawi się wyjątek w bloku finally metody ExceptionDemoMethod:
1. Komunikat z linijki 28 nie został wypisany, ponieważ kod zatrzymał się na wyjątku.
2. Jeśli nie byłoby obsługi wyjątku w linijce 5, aplikacja wysypałaby się podczas uruchamiania.
3. Na dodatek, jeśli nie byłoby obsługi wyjątku w linijce 20, stracilibyśmy informacje na jego temat a efekt wykonania takiego kodu wyglądałby dla odmiany tak:

Before exception in finally block
Finally block exception

DevDay, DevDay i po DevDayu – jak było?

Dzięki wejściówce wygranej jakiś czas temu na portalu DevTalk miałam okazję uczestniczyć w tegorocznej konferencji DevDay.

Konferencja zorganizowana przez ABB odbywała się już piąty raz. Jednak tym razem, w odróżnieniu od zeszłego roku, wykłady trwały aż dwa dni.

Można więc było się dowiedzieć czego Chad Fowler nauczył się o pracy programisty od dnia w którym napisał książkę „The Passionate Programmer: Creating a Remarkable Career in Software Development”.
Oliver Sturm zaprezentował zbiór strasznych kawałków kodu pod hasłem „Creepy C#” a Scott Allen smaczki z Roslyn.

Było też kilka prezentacji, gdzie początkujący w danym temacie mogli nauczyć się rzeczy od zera. Shay Friedman pokazał krok po kroku jak czarno-białą, nieciekawą stronę zamienić w nowoczesną i przyciągającą wzrok. Rob Conery zapoznał uczestników z NoSQLową bazą danych RethinkDB a Mathew McLoughlin zaprezentował działanie Omnisharp. Jest to zestaw narzędzi, wtyczek do popularnych edytorów a także bibliotek, które to umożliwiają dość wygodne tworzenie aplikacji .NETowych bez używania narzędzi Microsoftu.

Pojawił się również język F#  i to w dość ciekawej odsłonie. Mianowicie użyty w uczeniu maszynowym. Temat przedstawiła Alena Dzenisenka, której postać wydaje mi się dość ciekawa również z uwagi na ogromną ilość doświadczenia zawodowego jak na tak młody wiek.

W trakcie tych dwóch dni prezentacji brakowało mi jednak trochę głębszego wejścia w niektóre tematy, przekazania doświadczeń z dnia codziennego z daną technologią, przykładów „z życia wziętych”. Generalnie rzeczy, których nie znajdziemy w książkach ani internetowych tutorialach czy kursach.

Nie mogę się również doczekać, gdy w sieci ukażą się wykłady w których nie miałam okazji uczestniczyć, ponieważ jak to zwykle na tego typu konferencjach, wykłady odywały się równolegle w dwóch ścieżkach.