Podziękowania
Witajcie ponownie! Zapraszam do 10 wydania. W podziękowaniach do poprzednich wydań wspominałem o malowaniu Forth Railway Bridge i o Syzyfie jako nigdy niekończących się zadaniach. Być może w przyszłości ktoś doda do tej legendarnej listy pracę polegającą na aktualizowaniu Microsoft C# Krok po kroku. Co powiedziawszy, pisanie i uaktualnianie książki jest jednak znacznie bardziej satysfakcjonujące, niż oskrobywanie rdzy lub codzienne wtaczanie kamienia na szczyt, a dodatkową zaletą jest to, że pewnego dnia będę mógł po prostu przejść na emeryturę.
Pomimo faktu, że na okładce figuruje moje nazwisko, to stworzenie tego rodzaju książki z pewnością nie jest zadaniem dla jednego człowieka. Chciałbym w tym miejscu podziękować wymienionym poniżej osobom za ich bezgraniczne wsparcie i pomoc w realizacji tego zadania.
Po pierwsze, Loretta Yates z Pearson Education, która przyjęła rolę nadzorcy popychającego mnie do działania, i choć uprzejmie, to bezwzględnie przypominała mi dobrze zdefiniowane terminy realizacji poszczególnych etapów. Bez jej energii i uporu projekt ten nigdy by nie wystartował.
Następnie Rick Kughen, niestrudzony redaktor, który zadbał o to, aby moja pisanina była choć połowicznie zrozumiała, wyszukując brakujące słowa i bezsensowne frazy w tekście.
Dalej wkracza Charvi Arora i jej niestrudzony zespół redakcyjny, a w szczególności Kate Shoup i Dan Foster, którzy zadbali o to, aby moja gramatyka była przynajmniej akceptowalna i wyłapali wszystkie pominięte słowa lub nonsensowne frazy w tekście. Następnie David Fransen, który miał zadanie przejrzenia i przetestowania kodu przykładów i ćwiczeń. Wiem z własnego doświadczenia, że jest to niewdzięczne i frustrujące zadanie, ale poświęcony czas i niezliczone uwagi są jedynym sposobem, aby książka stała się lepsza. Oczywiście dowolne błędy, które pozostały, są wyłącznie moją winą i będę szczęśliwy, gdy czytelnicy powiadomią mnie o tych, które dostrzegą.
Jak zwykle muszę podziękować Dianie, mojej lepszej połowie, która dbała o stałe dostawy gorących napojów (złożonych głównie z kofeiny), gdy zbliżały się końcowe terminy. W czasie lockdownu Covid-19 uznała, że nasz dom nie jest dostatecznie zapełniony, zatem wprowadziła do naszej rodziny dwa raczej szalone kociaki. Psy są teraz w ciągłym strachu, ale mamy w zamian nieskończone godziny zabaw z podnoszeniem i opuszczanie zasłon i graniem w "polowanie na mysz/żabę/pająka" lub cokolwiek innego, co udało im się złapać i przynieść do domu. Nie wiem, jak mogłem do tej pory żyć bez nich.
Wreszcie na koniec muszę wspomnieć o naszych dzieciach, Jamesie i Frankie, którzy oboje już wyfrunęli z rodzinnego gniazda. James spędził ostatnich kilka lat w Manilii, pracując (jak twierdzi) dla rządu brytyjskiego. Sądząc po fotografiach, wygląda to raczej na niekończące się wakacje na plażach południowo-wschodniej Azji. Frankie pozostała bliżej domu, dzięki czemu od czasu do czasu wpada i bierze udział w łapaniu myszy/żab/pająków. Przy okazji uwaga do tych deweloperów, którymi kieruje w swojej pracy - najwyższy czas, abyście zrobili jej filiżankę herbaty!
O autorze
john Sharp jest głównym technologiem w CM Group Ltd. części Civica Group, brytyjskiej firmy programistycznej i konsultingowej. Jest szeroko znanym programistą, konsultantem, projektantem i autorem wielu materiałów szkoleniowych, poradników i książek. Jego przeszło 35-letnie doświadczenie zawodowe obejmuje szeroki zakres różnych technologii, poczynając od programowania w Pascalu dla systemów CP/M i tworzenia aplikacji C/Oracle na różnych wersjach systemów UNIX, aż po projektowanie rozproszonych aplikacji w C# i JavaScript i programowanie dla Windows 11 i Microsoft Azure. Swój czas poświęca również na tworzenie kursów szkoleniowych dla firmy Microsoft, koncentrując się na takich obszarach, jak danetyka z wykorzystaniem języków R i Python, przetwarzanie Big Data przy użyciu Spark i CosmosDB, SQL Server i NoSQL, usługi web, Blazor, a także programowanie międzyplatformowe przy użyciu takich frameworków, jak Xamari i MAUI oraz skalowalne architektury aplikacji oparte na Azure.
Wstęp
Wiele zmieniło się w ciągu ostatnich 20 lat. Czasami dla poprawy nastroju sięgam po swój egzemplarz pierwszego wydania Microsoft C# Krok po kroku, który ukazał się w 2001 roku i wzdycham wyrozumiale nad swoją naiwnością i niewinnością w tamtym czasie. Bez wątpienia C# stanowił w tym czasie szczyt perfekcji wśród języków programowania. C# oraz .NET Framework przebojem zdobyły świat deweloperów i echa tych wydarzeń rozbrzmiewają do tej pory. Jednak nie wygasają z czasem, ale mają coraz większy wpływ na powstawanie oprogramowania. Zamiast podejścia jednoplatformowego, co krytykowali przeciwnicy .NET w roku 2001, C# i .NET stają się stopniowo kompletnym, wieloplatformowym rozwiązaniem, które pozwala budować aplikacje dla Windows, macOS, Linuksa lub Androida. Dodatkowo C# i .NET pokazały już, że są wybierane jako środowisko wykonawcze wielu systemów chmurowych. Czymże Azure byłoby bez nich?
W przeszłości większość powszechnych języków programowania od czasu do czasu przechodziło okazjonalne aktualizacje, często rozciągające się na wiele lat. Dla przykładu, jeśli spojrzymy na Fortran, zauważymy standardy o nazwach Fortran 66, Fortran 77, Fortran 90, Fortran 95, Fortran 2003, Fortran 2008 oraz Fortran 2018. Mamy więc siedem aktualizacji w ciągu 55 lat. Choć taki względnie powolny cykl zmian promuje stabilność, prowadzi również do stagnacji. Problem leży w tym, że natura problemów, z którymi deweloperzy muszą sobie radzić, zmienia się błyskawicznie, zaś narzędzia, na których się opierają, powinny dotrzymywać kroku tym zmianom, aby możliwe było tworzenie efektywnych rozwiązań. Microsoft .NET zapewnia ciągle ewoluujący framework, zaś C# podlega częstym uaktualnienim, aby zapewnić najlepsze wykorzystanie platformy. Tak więc w przeciwieństwie do Fortranu, C# podlegał bardzo szybkiej ewolucji od pierwszego wydania - sześć wersji w ostatnich pięciu latach, przy czym kolejna zmiana jest zaplanowana na rok 2022. Język C# nadal wspiera kod napisany ponad 20 lat temu, ale dzisiejsze dodatki i rozszerzenia języka pozwalają tworzyć rozwiązania używające bardziej eleganckiego kodu i bardziej zwięzłych konstrukcji. Z tych powodów dokonuję okresowych aktualizacji tej książki i tak doszliśmy do bieżącego, dzisiątego wydania!
Poniższa lista przedstawia krótką historę C#:
C# 1.0 miał swój publiczny debiut w roku 2001.
C# 2.0 wraz z programem Visual Studio 2005 udostępniał kilka ważnych i nowych funkcji, takich jak ogólne typy wyliczeniowe i metody anonimowe.
C# 3.0, która pojawiła się wraz z opublikowaniem programu Visual Studio 2008, dodał obsługę metod rozszerzających, wyrażeń lambda oraz najważniejszej ze wszystkich nowości - obsługi zapytań w języku LINQ (Language Integrated Query).
Wprowadzona w roku 2010 wersja C# 4.0 zaoferowała kolejne udoskonalenia w zakresie polepszenia możliwości współdziałania z innymi technologiami i językami programowania. Funkcje te obejmowały obsługę argumentów nazwanych i opcjonalnych, typ dynamic, którego użycie wskazywało, że środowisko uruchomieniowe powinno zastosować dla danego obiektu późne wiązanie (late binding). Bardzo ważną zmianą wprowadzoną do wersji platformy .NET Framework, opublikowanej w tym samym czasie co wersja C# 4.0, były klasy i typy danych składające się na nową bibliotekę równoległego realizowania zadań - TPL (Task Parallel Library). Korzystając z biblioteki TPL można tworzyć wysoko skalowalne aplikacje, które będą w pełni wykorzystywać możliwości wielordzeniowych procesorów.
W C# 5.0 dodano natywną obsługę dla przetwarzania zadań w sposób asynchroniczny poprzez użycie modyfikatora metody async oraz operatora await.
C# 6.0 była kolejnym ulepszeniem zaprojektowanym z myślą o ułatwianiu życia programistom. Te udoskonalenia to między innymi interpolacja łańcuchów (już nigdy nie będziemy musieli korzystać z String.Format!), ulepszone sposoby implementacji właściwości czy metody wcielające wyrażenia.
W C# 7.0 do 7.3 pojawiły się dalsze ulepszenia poprawiające produktywność i usuwające pewne anachronizmy. Na przykład od tych wersji możemy implementować akcesory właściwości jako elementy wcielające wyrażenia, metody mogą zwraca wiele wartości (w formie krotek), uproszczone zostało użycie parametrów out, a instrukcje switch zostały rozszerzone o obsługę dopasowywania wzorców i typów. Te wersje języka zawierały również wiele innych, drobnieszych poprawek, rozwiązujących problemy zgłaszane przez deweloperów, takie jak dopuszczenie asynchroniczności metody Main.
C# 8.0, C# 9.0 i C# 10.0 kontynuują te ulepszanie języka w celu poprawy czytelności kodu i zwiększenia produktywności programistów. Niektóre z głównych uzupełnień obejmują rekordy, których możemy używać do budowania niezmiennych typów referencyjnych; rozszerzenia dopasowywania wzorców, pozwalające na używanie tej funkcjonalności w całym języku, a nie jedynie w instrukcjach switch; instrukcje najwyższego poziomu, które pozwalają używać C# jako języka skryptowego (nie musimy już zawsze pisać metody Main); domyślne metody interfejsu; statyczne funkcje lokalne; asynchroniczne typy odrzucalne i wiele innych funkcji omówionych w tej książce.
Nie da się zaprzeczyć, że Microsoft Windows jest ważną platformą dla aplikacji tworzonych w C#, ale teraz możemy uruchamiać kod zaprojektowany w C# również w innych systemach operacyjnych, takich jak Linux, dzięki środowisku .NET Runtime. Otwiera to możliwości tworzenia kodu, który może działać w wielu środowiskach. Dodatkowo Windows wspiera aplikacje o wysokim stopniu interaktywności, które mogą współdzielić pomiędzy sobą dane i współpracować ze sobą nawzajem lub łączyć się z usługami działającymi w chmurze. Kluczowym pojęciem w Windows są aplikacje Universal Windows Platform (UWP) - zaprojektowane tak, aby mogły być uruchamiane na dowolnym urządzeniu Windows 10 lub 11, począwszy od bogato wyposażonego komputera, po laptop, tablet, smartfon, a nawet urządzenia IoT (Internet of Things) z ograniczonymi zasobami. Po opanowaniu podstawowych funkcji języka C#, ważne jest zdobycie umiejętności budowania aplikacji, które mogą być uruchamiane na wszystkich wspomnianych platformach.
Chmura stała się tak ważnym elementem architektury wielu systemów - od wielkoskalowych aplikacji dla przedsiębiorstw, po apki mobilne działające na urządzeniach przenośnych - że zdecydowałem skupić się na tym aspekcie wytwarzania oprogramowania w finalnym rozdziale książki.
Środowisko programowania oferowane przez pakiet Visual Studio sprawia, że korzystanie ze wszystkich tych nowych i potężnych funkcji jest bardzo łatwe, a wiele nowych kreatorów i ulepszeń wprowadzonych do najnowszej wersji Visual Studio pozwala znacząco podnieść produktywność programistów. Mamy nadzieję, że korzystanie z tej książki będzie równie przyjemne, jak jej pisanie!
Dla kogo przeznaczona jest ta książka
Książka ta powstała przy założeniu, że Czytelnik ma już pewne doświadczenie w programowaniu i pragnie poznać podstawy programowania w języku C# przy wykorzystaniu środowiska Visual Studio 2022 oraz platformy .NET Framework w wersji 6 lub późniejszej. Po przeczytaniu tej książki jej Czytelnicy powinni dysponować dobrą znajomością języka C# i powinni umieć używać tego języka do tworzenia szybkich i skalowalnych aplikacji dla systemu operacyjnego Windows.
Dla kogo nie jest przeznaczona ta książka
Niniejsza książka skierowana jest do osób, które dopiero uczą się języka C#, ale nie są nowicjuszami w programowaniu jako takim. Dlatego koncentruje się ona głównie na kwestiach związanych z samym językiem C#. Celem tej książki nie jest dostarczenie wyczerpującego omówienia rozlicznych technologii pozwalających na tworzenie aplikacji przeznaczonych do użytku w dużych przedsiębiorstwach, takich jak ADO.NET, ASP.NET, Azure lub Windows Communication Foundation. Czytelnicy oczekujący większej ilości informacji na temat jednej z tych technologii powinni rozważyć lekturę kilku innych tytułów wydanych przez Microsoft Press.
Określenie najlepszego miejsca, od którego należy rozpocząć lekturę tej książki
Niniejsza książka ma za zadanie ułatwić jej Czytelnikom podniesienie swoich umiejętności w kilku podstawowych obszarach. Z książki tej mogą korzystać zarówno początkujący programiści, jak również programiści mający już pewne doświadczenie w innych językach programowania, takich jak C, C++, Java lub Visual Basic. Zamieszczona dalej tabela powinna ułatwić każdemu określenie najlepszego miejsca, od którego należy rozpocząć lekturę tej książki.
Jeżeli jesteś
Wykonaj następujące kroki
Programistą początkującym w dziedzinie programowania obiektowego
1. Zainstaluj pliki używane w opisywanych w tej książce ćwiczeniach, zgodnie z opisem podanym w dalszej części, zatytułowanej "Przykładowe kody źródłowe".
2. Przeczytaj po kolei wszystkie rozdziały od 1 do 22.
3. Przeczytaj rozdziały 23 do 27 w miarę podnoszenia poziomu doświadczenia oraz potrzeb.
Programistą dobrze obeznanym z proceduralnymi językami programowania, takimi jak np. język C, ale nowicjuszem w C#
1. Zainstaluj pliki używane w opisywanych w tej książce ćwiczeniach, zgodnie z opisem podanym w dalszej części, zatytułowanej "Przykładowe kody źródłowe".
2. Zapoznaj się pobieżnie z treścią pierwszych pięciu rozdziałów, aby uzyskać ogólny obraz języka C# oraz możliwości programu Visual Studio 2022, a następnie skoncentruj się na rozdziałach od 6 do 22.
3. Przeczytaj rozdziały 23 do 27 w miarę podnoszenia poziomu doświadczenia oraz potrzeb.
Programistą mającym już doświadczenie w innych obiektowych językach programowania, takich jak np. C++ lub Java, i pragnącym nauczyć się języka C#
1. Zainstaluj pliki używane w opisywanych w tej książce ćwiczeniach, zgodnie z opisem podanym w dalszej części, zatytułowanej "Przykładowe kody źródłowe".
2. Zapoznaj się pobieżnie z treścią pierwszych siedmiu rozdziałów, aby uzyskać ogólny obraz języka C# oraz możliwości programu Visual Studio 2022, a następnie skoncentruj się na rozdziałach od 7 do 22.
3. Przeczytaj rozdziały 23 do 27 w miarę podnoszenia poziomu doświadczenia oraz potrzeb.
Programistą znającym język Visual Basic, pragnącym nauczyć się języka C#
1. Zainstaluj pliki używane w opisywanych w tej książce ćwiczeniach, zgodnie z opisem podanym w dalszej części, zatytułowanej "Przykładowe kody źródłowe".
2. Przeczytaj po kolei wszystkie rozdziały od 1 do 22.
3. Przeczytaj rozdziały 23 do 27 w miarę podnoszenia poziomu doświadczenia oraz potrzeb.
4. Przeczytaj krótkie powtórzenia, znajdujące się na końcu każdego rozdziału, aby szybko uzyskać potrzebne informacje na temat konkretnych konstrukcji języka C# oraz funkcji programu Visual Studio 2022.
Zainteresowany znalezieniem potrzebnych informacji związanych z prezentowanymi w tej książce ćwiczeniami
1. Skorzystaj z indeksu lub spisu treści, aby znaleźć potrzebne informacje na konkretny temat.
2. Przeczytaj krótkie powtórzenia, znajdujące się na końcu każdego rozdziału, aby szybko zapoznać się z omawianymi w danym rozdziale technikami oraz elementami składni.
Większość rozdziałów tej książki zawiera użyteczne przykłady ułatwiające zrozumienie omawianych koncepcji i pojęć. Każdy Czytelnik, niezależnie od tego, które części tej książki będą dla niego najbardziej interesujące, powinien koniecznie pobrać i zainstalować na swoim komputerze omawiane aplikacje przykładowe.
Konwencje stosowane w tej książce
Zawarte w tej książce informacje są prezentowane przy użyciu konwencji poprawiających czytelność uraz ułatwiających śledzenie toku narracji.
Każde ćwiczenie składa się z szeregu czynności prezentowanych jako seria ponumerowanych kroków (1, 2, itd.), zawierających opis wszystkich działań niezbędnych do ukończenia danego ćwiczenia.
Elementy umieszczone w ramkach z ikoną na marginesie i etykietą, taką jak np. "Uwaga", "Wskazówka", zawierają dodatkowe informacje lub opis alternatywnego sposobu wykonania danego kroku.
Tekst, który powinien zostać wpisany przez Czytelnika, wyróżniany jest wytłuszczoną czcionką.
Znak plus pomiędzy oznaczeniem dwóch klawiszy oznacza, że należy klawisze te nacisnąć jednocześnie, np. Alt+Tab oznacza, że trzeba przytrzymać klawisz Alt w chwili naciśnięcia klawisza Tab.
Wymagania systemowe
Do wykonania prezentowanych w tej książce ćwiczeń potrzebny będzie komputer spełniający następujące wymagania sprzętowe i programowe:
System operacyjny Windows 10 albo Windows 11 (Home, Professional, Education lub Enterprise).
Najnowsze wydanie Visual Studio Community 2022, Visual Studio Professional 2022 lub Visual Studio Enterprise 2022*. Jako minimum należy podczas instalacji wybrać następujące środowiska:Projektowanie dla Universal Windows PlatformProjektowanie .NETProjektowanie ASP.NET i WebProjektowanie AzurePrzechowywanie i przetwarzanie danychProjektowanie międzyplatformowe .NET Core
Uwaga Wszystkie ćwiczenia i przykłady kodu z tej książki zostały opracowane i przetestowane przy użyciu Visual Studio Community 2022. Powinny wszystkie działać bez modyfikacji w Visual Studio Professional 2022 oraz Visual Studio Enterprise 2022.
Komputer z 64-bitowym procesorem 1.8 GHz lub szybszym, zalecany procesor czterodzeniowy lub lepszy. Procesory ARM nie są obsługiwane.
4 GB pamięci RAM (zalecane 8 GB lub więcej).
Miejsce na dysku twardym: od 850 MB w konfiguracji minimalnej do 210 GB wolnego miejsca, zależnie od zainstalowanych funkcji. Typowa instalacja wymaga od 20 do 50 GB.
Karta graficzna obsługująca rozdzielczość minimum 720p (1280 × 720). Visual Studio najlepiej działa w rozdzielczości WXGA (1366x768) lub wyższej.
Połączenie z publiczną siecią Internet, wymagane do pobrania oprogramowania lub przykładów dla poszczególnych rozdziałów.
W zależności od konfiguracji używanego systemu Windows, zainstalowanie i skonfigurowanie oprogramowania Visual Studio 2022 może wymagać posiadania uprawnień lokalnego administratora.
Ponadto trzeba włączyć na komputerze tryb dewelopera, aby móc tworzyć i uruchamiać aplikacje UWP. Dodatkowe informacje dotyczące osiągania tego celu znaleźć można w artykule "Enable Your Device for Development" (w jęz. angielskim) pod adresem https://msdn.microsoft.com/library/windows/apps/dn706236.aspx.
Przykłady kodu
Większość rozdziałów tej książki zawiera ćwiczenia pozwalające na interaktywne wypróbowanie nowych umiejętności, nabytych podczas lektury danego rozdziału. Wszystkie te przykładowe projekty można pobrać w wersji wyjściowej (tj. takiej, od której rozpoczyna się dane ćwiczenie) oraz w wersji końcowej (tj. takiej, jaką otrzymalibyśmy po starannym wykonaniu całego ćwiczenia) z następującej strony:
https://MicrosoftPressStore.com/VisualCsharp10e/downloads
Instalowanie przykładowych kodów źródłowych
Aby zainstalować na komputerze przykładowe kody źródłowe, które umożliwią praktyczne wykonywanie opisywanych w tej książce ćwiczeń, należy wykonać następujące kroki.
1. Rozpakuj plik CSharpSBS.zip pobrany z powyższej strony web do swojego katalogu Dokumenty.
2. Zaakceptuj postanowienia licencyjne w wyświetlonym monicie.
Uwaga Jeśli tekst umowy licencyjnej nie zostanie wyświetlony, z treścią tej umowy można zapoznać się na tej samej stronie web, z której pobrany został plik z przykładowymi kodami źródłowymi.
Korzystanie z przykładowych kodów źródłowych
Każdy rozdział tej książki wyjaśnia, kiedy i jak należy korzystać z przykładowych kodów źródłowych dla danego rozdziału. Gdy nadejdzie pora użycia kolejnego przykładu, podane zostaną dokładne instrukcje, jak należy otworzyć odpowiednie pliki.
Ważne Wiele przykładowych projektów jest zależnych od pakietów NuGet, które nie zostały dołączone do przykładów kodu. Te pakiety zostaną automatycznie pobrane w trakcie pierwszej kompilacji projektu. W konsekwencji, jeśli Czytelnik otworzy projekt i zacznie go analizować przed kompilacją, Visual Studio może zgłaszać wiele błędów spowodowanych nierozwiązanymi odwołaniami. Po skompilowaniu projektu problemy powinny zostać rozwiązane i błędy powinny zniknąć.
Dla tych Czytelników, którzy chcieliby poznać więcej szczegółów, poniżej zamieszczona została lista wszystkich przykładowych projektów i rozwiązań programu Visual Studio 2022, pogrupowanych według katalogów, w których się one znajdują. W wielu przypadkach przykładowe projekty dostępne są w wersji z plikami w stanie początkowym, umożliwiającym samodzielne przeprowadzenie danego ćwiczenia zgodnie z podanym opisem oraz w wersji końcowej, której można używać jako punktu odniesienia. Finalne wersje projektów z każdego rozdziału znajdują się w folderach o nazwie uzupełnionej przyrostkiem "- Complete" (Gotowe).
Projekt
Opis
Chapter 1
HelloWorld
Projekt ten pozwala rozpocząć naukę. Prowadzi Czytelnika poprzez tworzenie prostego programu za pomocą edytora tekstu (Notatnika). Program ten wyświetla tekstowe pozdrowienia.
HelloWorld2
Ten projekt demonstruje wykorzystanie interfejsu CLI (Command Level Interface) środowiska .NET do zbudowania i uruchomienia prostej aplikacji C#.
TextHello
Projekt Visual Studio wyświetlający tekst pozdrowienia.
HelloUWP
Ten projekt otwiera okno, które prosi użytkownika o podanie imienia, a następnie wyświetla spersonalizowane powitanie.
Chapter 2
PrimitiveDataTypes
Projekt demonstrujący sposób deklarowania zmiennych każdego z podstawowych typów danych, sposób przypisywania tym zmiennym wartości oraz sposób wyświetlania wartości tych zmiennych w oknie programu.
MathsOperators
Projekt wprowadzający operatory arytmetyczne (+ - * / %).
Chapter 3
Methods
W tym projekcie ponownie przeanalizujemy kod poprzedniego projektu MathsOperators i zbadamy wykorzystanie metod do uporządkowania kodu źródłowego.
DailyRate
Projekt demonstrujący proces pisania własnych metod, ich uruchamiania oraz krokowego śledzenia przy pomocy debugera z programu Visual Studio 2022.
DailyRate Using Optional Parameters
Projekt demonstrujący sposób definiowania metod akceptujących parametry opcjonalne oraz wywoływania tych metod przy użyciu nazwanych argumentów.
Factorial
Projekt ten demonstruje metodę rekurencyjną obliczającą silnię.
Chapter 4
Selection
Projekt demonstrujący kaskadowe użycie instrukcji if do zaimplementowania złożonej logiki, polegającej np. na porównywaniu dwóch dat.
SwitchStatement
Prosty program wykorzystujący instrukcję switch do przekształcania znaków na ich reprezentację w formacie XML.
SwitchStatement using Pattern Matching
Jest to rozszerzona wersja projektu SwitchStatement, która wykorzystuje dopasowywanie wzorców w celu uproszczenia logiki instrukcji switch.
Chapter 5
WhileStatement
Projekt demonstrujący użycie instrukcji while do odczytywania kolejnych linii z pliku źródłowego i wyświetlania każdej z nich w umieszczonym na formularzu, osobnym polu tekstowym.
DoStatement
Projekt wykorzystujący instrukcję do do przekształcenia liczby dziesiętnej na jej reprezentację ósemkową.
Chapter 6
MathsOperators
Projekt pokazujący na przykładzie projektu MathsOperators z rozdziału 2, jak różne nieobsłużone wyjątki mogą doprowadzić do przerwania działania programu. Stabilność działania aplikacji zostanie poprawiona poprzez użycie słów kluczowych try i catch.
Chapter 7
Classes
Projekt demonstrujący podstawy definiowania własnych klas, uzupełniania ich o publiczne konstruktory, metody oraz pola prywatne. Projekt ten demonstruje również sposób tworzenia nowych instancji klasy za pomocą słowa kluczowego new oraz sposób definiowania statycznych pól i metod.
Chapter 8
Parameters
Program wyjaśniający różnicę pomiędzy parametrami typu wartościowego a parametrami typu referencyjnego. Program ten demonstruje także użycie słów kluczowych ref i out.
Chapter 9
StructsAndEnums
Projekt definiujący strukturalny typ danych (przy użyciu słowa kluczowego struct), służący do reprezentowania daty kalendarzowej.
Chapter 10
Cards
Projekt demonstrujący zastosowanie tablic do zamodelowania puli kart w grze karcianej.
Chapter 11
ParamsArray
Projekt demonstrujący użycie słowa kluczowego params do tworzenia pojedynczej metody mogącej akceptować dowolną liczbę argumentów typu int.
Chapter 12
Vehicles
Projekt wykorzystujący interfejsy do utworzenia prostej hierarchii klas pojazdów. Projekt ten demonstruje także sposób definiowania metod wirtualnych.
ExtensionMethod
Projekt demonstrujący sposób tworzenia metody rozszerzającej dla typu int, której zadaniem będzie przekształcanie dziesiętnej liczby całkowitej w jej reprezentację w innym systemie liczenia.
Chapter 13
Drawing
Projekt implementujący część pakietu graficznego. Projekt ten wykorzystuje interfejsy do zdefiniowania metod udostępnianych i implementowanych przez różne figury geometryczne.
Chapter 14
GarbageCollectionDemo
Projekt demonstrujący sposób bezpiecznego zwalniania zasobów w środowisku wielowątkowym poprzez odpowiednie używanie wzorca Dispose.
Chapter 15
Drawing Using Properties
Projekt rozszerzający aplikację w projekcie Drawing opracowanym w rozdziale 13 poprzez hermetyzację wybranych danych wewnątrz klasy przy użyciu właściwości.
AutomaticProperties
Projekt demonstrujący sposób tworzenia automatycznych właściwości klas oraz wykorzystywania ich do inicjalizowania nowych instancji klasy.
Student enrollment
Projekt demonstrujący użycie rekordów do modelowania strukturalnych typów niezmiennych.
Chapter 16
Indexers
Projekt demonstrujący zastosowanie dwóch obiektów indeksujących (indeksatorów): jednego służącego do wyszukiwania numeru telefonu osoby o podanym nazwisku i drugiego służącego do wyszukiwania nazwiska osoby o podanym numerze telefonu.
Chapter 17
BinaryTree
Rozwiązanie demonstrujące sposób używania ogólnych typów danych do utworzenia struktury bezpiecznej pod względem typu, mogącej zawierać elementy dowolnego typu.
BuildTree
Projekt demonstrujący sposób użycia ogólnych typów danych do zaimplementowania metody bezpiecznej pod względem typu, mogącej akceptować parametry dowolnego typu.
Chapter 18
Cards
Projekt zawierający zmodyfikowaną wersję kodu z rozdziału 10, demonstrujący sposób użycia kolekcji do modelowania puli kart rozdanych pomiędzy graczy w grze karcianej.
Chapter 19
BinaryTree
Projekt demonstrujący sposób zaimplementowania ogólnego interfejsu typu IEnumerator<T>, który umożliwia utworzenie obiektu wyliczeniowego dla ogólnej klasy Tree.
IteratorBinaryTree
Rozwiązanie wykorzystujące iterator do wygenerowania typu wyliczeniowego dla ogólnej klasy Tree.
Chapter 20
Delegates
Projekt demonstrujący sposób wykorzystania delegacji do oddzielenia metody od logiki korzystającej z tej metody aplikacji. Następnie projekt zostaje rozszerzony, aby zademonstrować sposób wykorzystania zdarzeń do powiadamiania obiektów o ważnych wydarzeniach oraz sposób przechwytywania tego typu zdarzeń i wykonywania związanych z nimi akcji.
Chapter 21
QueryBinaryTree
Projekt demonstrujący sposób pobierania danych z obiektu typu drzewo binarne, przy użyciu zapytań w języku LINQ.
Chapter 22
ComplexNumbers
Projekt definiujący nowy typ danych, modelujący liczby zespolone i implementujący klika typowych operatorów dla tego typu.
Chapter 23
GraphDemo
Projekt generujący skomplikowany wykres i wyświetlający go na formularzu UWP. W tym projekcie niezbędne obliczenia wykonywane są przez jeden wątek.
Parallel GraphDemo
Jest to wersja projektu GraphDemo, w którym do wyodrębnienia procesu tworzenia i zarządzania zadaniami użyta została klasa Parallel.
GraphDemo With Cancellation
Projekt pokazujący, jak zaimplementować możliwość zatrzymywania zadań w kontrolowany sposób, zanim same zakończą swoje działanie.
ParallelLoop
Przykładowa aplikacja pokazująca, kiedy nie należy używać klasy Parallel do tworzenia i uruchamiania kilku zadań równocześnie.
Chapter 24
GraphDemo
Jest to wersja projektu GraphDemo z rozdziału 23, w której w celu asynchronicznego wykonania obliczeń potrzebnych do wygenerowania wykresu zastosowano słowo kluczowe async oraz operator await.
PLINQ
Projekt demonstrujący kilka przykładów wykorzystywania technologii PLINQ do pobierania danych, przy użyciu zadań równoległych.
CalculatePI
Projekt wykorzystujący algorytm próbkowania statystycznego do obliczenia przybliżonej wartości liczby pi. Projekt ten wykorzystuje zadania równoległe.
ParallelTest
Program ilustrujące zagrożenia wynikające z pozwalania na niekontrolowany dostęp do współdzielonych danych przez równoległe wątki.
Chapter 25
Customers
Ten projekt implementuje skalowalny interfejs użytkownika, który poddaje się skalowaniu dla różnych rozdzielczości ekranu i różnych kształtów formularza. Interfejs użytkownika wykorzystuje style XAML do zmiany czcionki oraz wyświetlanego przez aplikację obrazu tła.
Chapter 26
DataBinding
Ta wersja projektu Customers wyświetla informacje o klientach, pobierając je ze źródła danych przy użyciu mechanizmu wiązania danych. Projekt ten demonstruje również sposób implementacji interfejsu INotifyPropertyChanged, pozwalającego na aktualizowanie informacji o kliencie z poziomu interfejsu użytkownika i odsyłanie wykonanych zmian z powrotem do źródła danych.
ViewModel
W tej wersji projektu Customers zaimplementowano metodologię programowania MVVM (Model-View-ViewModel), co pozwoliło na oddzielenie interfejsu użytkownika od logiki pobierającej dane ze źródła danych.
Chapter 27
Web Service
Rozwiązanie obejmujące aplikację web dostarczającą usługi typu ASP.NET Web Service, używanej przez aplikację Customers do pobierania danych klientów z bazy danych serwera SQL Server. Podczas dostępu do bazy danych usługa web używa modelu encji utworzonego przy użyciu technologii Entity Framework.
Customers with insert and update features
To rozwiązanie zawiera uaktualnioną wersję projektu Customers, wykorzystującego usługę web typu REST do tworzenia rekordów nowych klientów i modyfikowania szczegółów istniejących klientów.
Errata i wsparcie techniczne
Dołożono wszelkich starań, mających na celu zapewnienie dokładności tej książki oraz towarzyszących jej treści. Informacje o wszelkich błędach, które zostały dostrzeżone i zgłoszone już po opublikowaniu tej książki, dostępne są na stronie wydawnictwa Microsoft Press:
https://MicrosoftPressStore.com/VisualCsharp10e/errata
W przypadku wykrycia nowego błędu można go zgłosić za pomocą tej samej, wymienionej powyżej strony.
W razie potrzeby uzyskania dodatkowej pomocy technicznej związanej z tą książką prosimy o skontaktowanie się z działem pomocy technicznej wydawnictwa Microsoft Press Book Support poprzez wysłanie wiadomości email na adres:
mspinput@microsoft.com.
Prosimy pamiętać, że pod podanymi adresami nie jest oferowana pomoc techniczna dla oprogramowania firmy Microsoft. Jeśli ktoś potrzebuje pomocy dotyczącej oprogramowania lub sprzętu firmy Microsoft, powinien skorzystać z informacji na poniższej stronie:
https://support.microsoft.com
* Podczas przygotowywania polskiego wydania książki przyjęliśmy założenie, że Czytelnik posługuje się systemem Windows w polskiej wersji językowej i że używa Visual Studio z zainstalowanym polskim pakietem językowym. Nazwy poleceń menu i elementów programu występujące w tekście są podawane w wersji polskiej - przy pierwszym użyciu w nawiasie podawana jest nazwa angielska. Natomiast kod przykładowy opracowany przez autora nie był modyfikowany - przetłumaczone zostały jedynie komentarze występujące w tym kodzie. Wszystkie zrzuty ekranowe zostały wykonane na komputerze systemu Windows 10 w Visual Studio Community 2022 wersja 17.2.6. Oprogramowanie Visual Studio podlega ciągłemu rozwojowi, zatem nie jest wykluczone, że w chwili, gdy książka trafi do rąk Czytelników, pewne elementy interfejsu użytkownika będą wyglądały inaczej, niż w tej publikacji (przyp. red. wydania polskiego).