Każdy programista to leń, już kiedyś o tym pisałem 😉 Kiedy dodajemy do projektu nową klasę/interfejs/ogólnie plik z kodem* zawiera on określone z góry rzeczy (nazwa klasy, domyślną sekcję using itp.) Można zmodyfikować istniejący szablon plików, aby wygenerowany kod był od razu bardziej dostosowany do naszych potrzeb. W moim przypadku jest to wydzielenie regionów na […]
Specyfika pewnej części projektu, nad którym obecnie pracuję wymagała zastosowania tablicy haszującej. Struktury danych, które są przechowywane w tablicach (jedna tablica na typ) wyglądają następująco: Okazało się, że metoda GetHashCode() domyślnie wygenerowana przez IDE dla klasy Vector3 jest niewystarczająca – błędy pojawiły się już przy próbie wczytania wierzchołków, krawędzi i trójkątów prostego sześcianu. Chwila zastanowienia […]
W jednej z notek z serii „Short Tip” pisałem o użyciu operatorów ? i ??. Tym razem znak zapytania pojawi się w innym kontekście. Pierwsze założenie (plus wyjaśnienie, tak na wszelki wypadek): zakładam, że znane są pojęcia (i rozróżnienie na) Value types i Reference types. W dużym skrócie: Value types (czy „typy wartościowe” to dobre […]
Oprócz standardowych metod Debugowania aplikacji w Visual Studio (breakpoint’y + klawisze F10 i F11) czasami przydaje się wypisanie informacji do konsoli. W projekcie Windows Forms można to zrobić za pomocą następującego fragmentu kodu: W XNA można: informacje o stanie aplikacji na każdym etapie jej tworzenia wyświetlać za pomocą HUD-a (tu pozdrowienia dla pracoholików) skorzystać ze […]
Wzorzec Singleton jest chyba najprostszym ze stosowanych „nazwanych” wzorców. Jego koncepcja jest bardzo prosta: w cyklu działania aplikacji może być utworzona TYLKO JEDNA instancja danego obiektu i powinna być ona dostępna z każdego miejsca w kodzie. W implementacji klasy (przykładowa implementacja poniżej) są ważne następujące elementy: prywatna, statyczna instancja klasy singletona konstruktor, który jest albo […]
Czasem chciałoby się nazwać zmienną tak, jak słowo kluczowe języka, chociażby zmienną typu int chcielibyśmy nazwać właśnie.. „int„. Taka konstrukcja nie przejdzie, zakończy się błędem kompilacji: C# umożliwia taką operację, wystarczy przed nazwę zmiennej wstawić „@”, tak jak poniżej: To raczej ciekawostka, niż użyteczny ficzer, bo nie wyobrażam sobie zastosowania takiego kodu:
Dla każdego programisty błogosławieństwem są (a przynajmniej powinny być) gotowe biblioteki. Sam regularnie korzystam z STL# ;), czyli System.Collections.Generic. Są to skompilowane klasy, jednak .NET 3.5 (a dokładniej C# 3.0) dostarcza możliwość dodania do nich własnoręcznie zaimplementowane metody. Konstrukcja ta nosi nazwę Extension Methods, a korzysta się z niej w następujący sposób:
Stare chińskie przysłowie mówi, że „Krótki fragment kodu wart jest więcej niż tysiąc słów.” Nie przedłużając więc: Uściślając: w przykładowej klasie jest prywatna zmienna _member, do której odwołujemy się z zewnątrz przez publiczną właściwość (ang. Property) Member. Mechanika obsługi tej zmiennej przez właściwość nie jest zbyt wyszukana, więc możemy zastąpić ją tzw. Auto-Implemented Property (lub […]
Poniżej krótki sposób jak pozbyć się ze swojego kodu pewnych potworków. Bardzo częstą konstrukcją if (..) then .. else .., jednak niech Was ręka boska broni od napisania czegoś takiego: Zamiast tego proponuję użycie operatora „?” (znak zapytania), o następującej składni: który zwraca expression1, jeżeli warunek condition jest prawdziwy lub expression2 w przeciwnym przypadku. Refactoring […]