C# 7.0. Kompletny przewodnik dla praktyków. Wydanie VI - ebook
C# 7.0. Kompletny przewodnik dla praktyków. Wydanie VI - ebook
C# jest jednym z lepiej dopracowanych języków programowania. Cechują go dojrzałość, prostota, nowoczesność i bezpieczeństwo. Został od podstaw zaprojektowany jako obiektowy. Stanowi integralną część platformy Microsoft .NET Framework. Jest ulubionym narzędziem profesjonalnych programistów, którym zależy na pisaniu kodu bezpiecznego, przejrzystego, wydajnego i prostego w konserwacji. W wersji 7.0 tego języka pojawiły się nowe usprawnienia, dzięki którym programowanie stało się jeszcze bardziej efektywne i satysfakcjonujące.
Ta książka jest szóstym, zaktualizowanym i uzupełnionym wydaniem jednego z najlepszych podręczników programowania. Poza znakomitym kompendium języka C# znalazły się tu informacje o poszczególnych metodykach programowania, od sekwencyjnego aż po podstawy programowania deklaratywnego z wykorzystaniem atrybutów. Szczegółowo przedstawiono funkcje wprowadzone do wersji 7.0 języka, a także w platformie .NET Framework 4.7/.NET Core 2.0. Książka jest też wygodnym źródłem wiedzy o pewnych rzadko stosowanych konstrukcjach składniowych, specyficznych szczegółach i subtelnościach języka C#. Jasny i przejrzysty sposób prezentowania treści pozwoli na szybkie zrozumienie nawet najbardziej zawiłych zagadnień.
W tej książce między innymi:
- przewodnik po C# oraz różne paradygmaty programowania
- interfejsy, dziedziczenie, typy bezpośrednie
- obsługa wyjątków
- delegaty, technologia LINQ i mechanizm refleksji
- zarządzanie wątkami i programowanie asynchroniczne
C#. Nowoczesny, elegancki, bezpieczny!
Spis treści
- Przedmowa
- Wprowadzenie
- Dla kogo przeznaczona jest ta książka?
- Cechy tej książki
- Wskazówki dotyczące pisania kodu w języku C#
- Przykładowy kod
- Mapy myśli
- Pomocne uwagi
- Struktura książki
- Podziękowania
- O autorze
- O redaktorze technicznym
- 1. Wprowadzenie do języka C#
- Witaj, świecie
- Tworzenie, edytowanie, kompilowanie i uruchamianie kodu źródłowego w języku C#
- Używanie narzędzia Dotnet CLI
- Używanie środowiska Visual Studio 2017
- Tworzenie projektu
- Kompilowanie i wykonywanie kodu
- Kod źródłowy do książki C# 7.0
- Używanie Dotnet CLI
- Używanie Visual Studio
- Tworzenie, edytowanie, kompilowanie i uruchamianie kodu źródłowego w języku C#
- Podstawy składni języka C#
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Słowa kluczowe
- Słowa kluczowe języka C#
- Identyfikatory
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Słowa kluczowe
- Definicja typu
- Metoda Main
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Czym jest metoda
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Deklaracja metody Main
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Instrukcje i ograniczniki instrukcji
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Instrukcje bez średników
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Czym są odstępy?
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Odstępy
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Formatowanie kodu za pomocą odstępów
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Korzystanie ze zmiennych
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Zmienne lokalne
- Typy danych
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Czym jest typ danych?
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Deklarowanie zmiennej
- Przypisywanie wartości do zmiennej
- Korzystanie ze zmiennej
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wartość łańcuchów znaków jest niezmienna
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Dane wejściowe i wyjściowe w konsoli
- Pobieranie danych wejściowych z konsoli
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Metoda System.Console.Read()
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wyświetlanie danych wyjściowych w konsoli
- Komentarze
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- XML
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Pobieranie danych wejściowych z konsoli
- Wykonywanie kodu w środowisku zarządzanym i platforma CLI
- Język CIL i narzędzie ILDASM
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Dane wyjściowe w języku CIL z programu HelloWorld.exe
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Język CIL i narzędzie ILDASM
- Różne wersje platformy .NET
- Interfejsy API
- Wersje języka C# i platformy .NET
- .NET Standard
- Podsumowanie
- Witaj, świecie
- 2. Typy danych
- Podstawowe typy liczbowe
- Typy całkowitoliczbowe
- Typy zmiennoprzecinkowe (float i double)
- Typ decimal
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Analiza typów zmiennoprzecinkowych
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Literały liczbowe
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Zachowaj ostrożność, gdy zapisujesz wartości na sztywno
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Notacja szesnastkowa
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wyświetlanie liczb w formacie szesnastkowym
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Formatowanie dwustronne
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Inne podstawowe typy
- Typ logiczny (bool)
- Typ znakowy (char)
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Standard Unicode
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- 16 bitów nie wystarcza do przedstawienia wszystkich znaków Unicode
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Łańcuchy znaków
- Literały
- Interpolacja łańcuchów znaków
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wewnętrzne mechanizmy interpolacji łańcuchów znaków
- Metody dla typu string
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Dyrektywy using i using static
- Formatowanie łańcuchów znaków
- Nowy wiersz
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Właściwości w języku C#
- Długość łańcuchów znaków
- Łańcuchy znaków są niezmienne
- Typ System.Text.StringBuilder
- Wartości null i void
- Słowo kluczowe null
- Typ void
- Konwersje typów danych
- Jawne rzutowanie
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Konwersje kontrolowane i niekontrolowane
- Konwersja niejawna
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Konwersja typów bez rzutowania
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Metoda TryParse()
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Jawne rzutowanie
- Podsumowanie
- Podstawowe typy liczbowe
- 3. Jeszcze o typach danych
- Kategorie typów
- Typy bezpośrednie
- Typy referencyjne
- Modyfikator umożliwiający stosowanie wartości null
- Zmienne lokalne z niejawnie określanym typem danych
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Typy anonimowe
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Zmienne lokalne z niejawnie określanym typem danych
- Krotki
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Typ System.ValueTuple<>
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Tablice
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Tablice
- Deklarowanie tablicy
- Tworzenie instancji tablic i przypisywanie do nich wartości
- Korzystanie z tablicy
- Długość
- Inne metody dla tablic
- Metody instancyjne tablicy
- Łańcuchy znaków jako tablice
- Typowe błędy związane z tablicami
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Podsumowanie
- Kategorie typów
- Operatory i przepływ sterowania
- Operatory
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Operatory
- Operatory jednoargumentowe plus (+) i minus ()
- Arytmetyczne operatory dwuargumentowe (+, , *, /, %)
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Nawiasy, łączność, priorytety i określanie wartości
- Używanie operatora dodawania dla łańcuchów znaków
- Używanie znaków w operacjach arytmetycznych
- Wyjątkowe cechy typów zmiennoprzecinkowych
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Nieoczekiwane nierówności wartości typów zmiennoprzecinkowych
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Złożone operatory przypisania (+=, =, *=, /=, %=)
- Operatory inkrementacji i dekrementacji (++, )
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Przykładowa dekrementacja w pętli
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Inkrementacja i dekrementacja bezpieczna ze względu na wątki
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Wyrażenia o stałej wartości i stałe lokalne
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Zarządzanie przepływem sterowania
- Instrukcja if
- Zagnieżdżone instrukcje if
- Bloki kodu ({})
- Bloki kodu, zasięgi i przestrzenie deklaracji
- Wyrażenia logiczne
- Operatory relacyjne i równości
- Operatory logiczne
- Operator OR (||)
- Operator AND (&&)
- Operator XOR (^)
- Logiczny operator negacji (!)
- Operator warunkowy (?:)
- Operator ??
- Operator ?.
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Stosowanie operatora ?. razem z delegatami
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Operatory bitowe (<<, >>, |, &, ^, ~)
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Bity i bajty
- Operatory przesunięcia (<<, >>, <<=, >>=)
- Operatory bitowe (&, |, ^)
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Objaśnienie operatorów logicznych
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Bitowe złożone operatory przypisania (&=, |=, ^=)
- Bitowy operator dopełnienia (~)
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Instrukcje związane z przepływem sterowania ciąg dalszy
- Pętle while i do/while
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Kiedy należy stosować pętlę while?
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Pętla for
- Pętla foreach
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- W jakich sytuacjach sensowne jest stosowanie instrukcji switch?
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Podstawowa postać instrukcji switch
- Pętle while i do/while
- Instrukcje skoku
- Instrukcja break
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Sprawdzanie pozycji za pomocą operatorów bitowych
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Instrukcja continue
- Instrukcja goto
- Instrukcja break
- Dyrektywy preprocesora języka C#
- Wykluczanie i dołączanie kodu (#if, #elif, #else, #endif)
- Definiowanie symboli preprocesora (#define, #undef)
- Generowanie błędów i ostrzeżeń (#error, #warning)
- Wyłączanie komunikatów z ostrzeżeniami (#pragma)
- Opcja nowarn:<lista ostrzeżeń>
- Określanie numerów wierszy (#line)
- Wskazówki dla edytorów kodu z interfejsem graficznym (#region, #endregion)
- Podsumowanie
- Operatory
- 5. Metody i parametry
- Wywoływanie metody
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Czym jest metoda?
- Przestrzenie nazw
- Nazwa typu
- Zasięg
- Nazwa metody
- Parametry i argumenty
- Wartości zwracane przez metody
- Instrukcje a wywołania metod
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Deklarowanie metody
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Refaktoryzacja kodu przez umieszczanie go w metodach
- Deklarowanie parametrów formalnych
- Deklaracja typu wartości zwracanej przez metodę
- Metody z ciałem w postaci wyrażenia
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Przestrzenie nazw
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Dyrektywa using
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Zagnieżdżone dyrektywy using
- Dyrektywa using static
- Tworzenie aliasów
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Zwracane wartości i parametry metody Main()
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Odróżnianie od siebie różnych metod Main()
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Stos wywołań i miejsce wywołania
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Zaawansowane parametry metod
- Parametry przekazywane przez wartość
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Dopasowywanie zmiennych z jednostki wywołującej do nazw parametrów
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Typy referencyjne a typy bezpośrednie
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Parametry przekazywane przez referencję (z modyfikatorem ref)
- Parametry wyjściowe (z modyfikatorem out)
- Przekazywanie przez referencję w trybie tylko do odczytu (in)
- Zwracanie przez referencję
- Tablice parametrów (params)
- Parametry przekazywane przez wartość
- Rekurencja
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Błąd nieskończonej rekurencji
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Przeciążanie metod
- Parametry opcjonalne
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Określanie wywoływanej metody
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Podstawowa obsługa błędów z wykorzystaniem wyjątków
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Wartość 42 jako łańcuch znaków i jako liczba całkowita
- Przechwytywanie błędów
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Dziedziczenie klas wyjątków
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Ogólny blok catch
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Zgłaszanie błędów za pomocą instrukcji throw
- Unikaj stosowania obsługi wyjątków do radzenia sobie z oczekiwanymi sytuacjami
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Przekształcanie liczb za pomocą instrukcji TryParse()
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Podsumowanie
- Wywoływanie metody
- 6. Klasy
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Programowanie obiektowe
- Hermetyzacja
- Dziedziczenie
- Polimorfizm
- Deklarowanie klasy i tworzenie jej instancji
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Czym są obiekty, a czym klasy?
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Hermetyzacja, część 1. Obiekty łączą dane z metodami
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Pola instancji
- Deklarowanie pola instancji
- Dostęp do pól instancji
- Metody instancji
- Stosowanie słowa kluczowego this
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Wykorzystywanie stylu programowania do unikania wieloznaczności
- Zapisywanie i wczytywanie plików
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Modyfikatory dostępu
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Hermetyzacja, część 2. Ukrywanie informacji
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Właściwości
- Deklarowanie właściwości
- Automatycznie implementowane wartości
- Wskazówki dotyczące właściwości i pól
- Używanie właściwości ze sprawdzaniem poprawności
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Operator nameof
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Właściwości przeznaczone tylko do odczytu i tylko do zapisu
- Właściwości jako pola wirtualne
- Modyfikatory dostępu w getterach i setterach
- Właściwości i wywołania metod nie są dozwolone jako wartości parametrów ref i out
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wewnętrzne mechanizmy właściwości
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Konstruktory
- Deklarowanie konstruktora
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Szczegóły implementacji operatora new
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Konstruktory domyślne
- Inicjatory obiektów
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Inicjatory kolekcji
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Finalizatory
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Przeciążanie konstruktorów
- Łączenie konstruktorów w łańcuch wywoływanie innego konstruktora za pomocą słowa kluczowego this
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Centralizowanie inicjowania
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Dekonstruktory
- Deklarowanie konstruktora
- Składowe statyczne
- Pola statyczne
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Dane można powiązać zarówno z klasą, jak i z obiektami
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Metody statyczne
- Konstruktory statyczne
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Preferuj statyczną inicjację w deklaracji
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Właściwości statyczne
- Klasy statyczne
- Pola statyczne
- Metody rozszerzające
- Hermetyzacja danych
- Modyfikator const
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Stałe publiczne powinny być niezmiennymi wartościami
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Modyfikator readonly
- Modyfikator const
- Klasy zagnieżdżone
- Klasy częściowe
- Definiowanie klasy częściowej
- Metody częściowe
- Podsumowanie
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Dziedziczenie
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Definicje z obszaru dziedziczenia
- Tworzenie klas pochodnych
- Rzutowanie między typami bazowymi i pochodnymi
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Rzutowanie w łańcuchu dziedziczenia
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Definiowanie niestandardowych konwersji
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Modyfikator dostępu private
- Modyfikator dostępu protected
- Metody rozszerzające
- Dziedziczenie po jednym typie
- Klasy zamknięte
- Rzutowanie między typami bazowymi i pochodnymi
- Przesłanianie składowych z klas bazowych
- Modyfikator virtual
- Modyfikator new
- Modyfikator sealed
- Składowa base
- Konstruktory
- Klasy abstrakcyjne
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Klasy abstrakcyjne
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Polimorfizm
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Wszystkie klasy są pochodne od System.Object
- Sprawdzanie typu za pomocą operatora is
- Dopasowanie do wzorca z użyciem operatora is
- Dopasowanie do wzorca w instrukcji switch
- Konwersja z wykorzystaniem operatora as
- Podsumowanie
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- 8. Interfejsy
- Wprowadzenie do interfejsów
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Po co stosować interfejsy?
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Polimorfizm oparty na interfejsach
- Implementacja interfejsu
- Składowe z jawnie podawanym interfejsem
- Składowe bez jawnie podawanego interfejsu
- Porównanie implementacji z jawnie podawanym interfejsem i bez podawania interfejsu
- Przekształcanie między klasą z implementacją i interfejsami
- Dziedziczenie interfejsów
- Dziedziczenie po wielu interfejsach
- Metody rozszerzające i interfejsy
- Implementowanie wielodziedziczenia za pomocą interfejsów
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Diagramy interfejsów
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Zarządzanie wersjami
- Interfejsy a klasy
- Interfejsy a atrybuty
- Podsumowanie
- Wprowadzenie do interfejsów
- 9. Typy bezpośrednie
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Kategorie typów
- Typy bezpośrednie
- Typy referencyjne
- Struktury
- Inicjowanie struktur
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Używanie operatora new do typów bezpośrednich
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Używanie operatora default
- Dziedziczenie i interfejsy a typy bezpośrednie
- Inicjowanie struktur
- Opakowywanie
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Typy bezpośrednie w instrukcji lock
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Jak uniknąć opakowywania w wywołaniach metod?
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wyliczenia
- Zgodność typów wyliczeniowych
- Konwersja między wyliczeniami a łańcuchami znaków
- Wyliczenia jako flagi
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Atrybut FlagsAttribute
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Podsumowanie
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- 10. Dobrze uformowane typy
- Przesłanianie składowych z klasy object
- Przesłanianie metody ToString()
- Przesłanianie metody GetHashCode()
- Przesłanianie metody Equals()
- Tożsamość obiektów a równe wartości obiektów
- Implementowanie metody Equals()
- Przeciążanie funkcji GetHashCode() i Equals() z użyciem krotek
- Przeciążanie operatorów
- Operatory porównania (==, !=, <, >, <=, >=)
- Operatory dwuargumentowe (+, , *, /, %, &, |, ^, <<, >>)
- Łączenie przypisania z operatorami dwuargumentowymi (+=, =, *=, /=, %=, &=, )
- Logiczne operatory warunkowe (&&, ||)
- Operatory jednoargumentowe (+, , !, ~, ++, , true, false)
- Operatory konwersji
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Operator rzutowania ()
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wytyczne dotyczące operatorów konwersji
- Wskazywanie innych podzespołów
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Biblioteki klas
- Wskazywanie biblioteki
- Wskazywanie projektu lub biblioteki w Dotnet CLI
- Wskazywanie projektu lub biblioteki w Visual Studio 2017
- Pakiety NuGet
- Referencje do pakietów NuGet w Dotnet CLI
- Dodawanie referencji do pakietów NuGet w Visual Studio 2017
- Wywoływanie pakietu NuGet
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Hermetyzacja typów
- Modyfikatory dostępu public i internal w deklaracjach typów
- Modyfikator protected internal dla składowych w typach
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Modyfikatory dostępu dla składowych w typach
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Definiowanie przestrzeni nazw
- Komentarze XML-owe
- Wiązanie komentarzy XML-owych z konstrukcjami programistycznymi
- Generowanie pliku z dokumentacją w formacie XML
- Odzyskiwanie pamięci
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Odzyskiwanie pamięci w platformie .NET
- Słabe referencje
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Porządkowanie zasobów
- Finalizatory
- Deterministyczna finalizacja z wykorzystaniem instrukcji using
- Odzyskiwanie pamięci, finalizacja i interfejs IDisposable
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Przekazywanie wyjątków z konstruktorów
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Ponowne tworzenie usuwanych obiektów
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Leniwe inicjowanie
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Leniwe inicjowanie za pomocą typów generycznych i wyrażeń lambda
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Podsumowanie
- Przesłanianie składowych z klasy object
- 11. Obsługa wyjątków
- Wiele typów wyjątków
- Przechwytywanie wyjątków
- Ponowne zgłaszanie przetwarzanego wyjątku
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Zgłaszanie istniejącego już wyjątku bez zastępowania informacji na stosie
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Ponowne zgłaszanie przetwarzanego wyjątku
- Ogólny blok catch
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Ogólne bloki catch w języku C# 1.0
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wewnętrzne mechanizmy pustego bloku catch
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wskazówki związane z obsługą wyjątków
- Definiowanie niestandardowych wyjątków
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wyjątki z obsługą serializacji
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Ponowne zgłaszanie opakowanego wyjątku
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Konwersje z kontrolą i bez kontroli
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Podsumowanie
- 12. Typy generyczne
- Język C# bez typów generycznych
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Inny przykład typy bezpośrednie z możliwą wartością null
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Wprowadzenie do typów generycznych
- Używanie klasy generycznej
- Definiowanie prostej klasy generycznej
- Zalety typów generycznych
- Wskazówki związane z tworzeniem nazw parametrów określających typy
- Generyczne interfejsy i struktury
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wielokrotne implementowanie jednego interfejsu w tej samej klasie
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Definiowanie konstruktora i finalizatora
- Określanie wartości domyślnej
- Wiele parametrów określających typ
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Krotki typy o różnej arności
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Zagnieżdżone typy generyczne
- Ograniczenia
- Ograniczenia dotyczące interfejsu
- Ograniczenia dotyczące klasy
- Ograniczenia wymagające struktury lub klasy (struct i class)
- Zestawy ograniczeń
- Ograniczenia dotyczące konstruktora
- Ograniczenia dotyczące dziedziczenia
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wymogi związane z ograniczeniami
- Ograniczenia dotyczące operatorów są niedozwolone
- Relacja LUB między ograniczeniami nie jest obsługiwana
- Ograniczenia dotyczące delegatów i wyliczeń są niedozwolone
- W ograniczeniu dotyczącym konstruktora można podawać tylko konstruktory domyślne
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Metody generyczne
- Inferencja typów w metodach generycznych
- Dodawanie ograniczeń
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Rzutowanie w metodach generycznych
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Kowariancja i kontrawariancja
- Umożliwianie kowariancji za pomocą modyfikatora out stosowanego do parametru określającego typ (od wersji C# 4.0)
- Umożliwianie kontrawariancji z użyciem modyfikatora in dla parametru określającego typ (od wersji C# 4.0)
- Obsługa niezabezpieczonej kowariancji w tablicach
- Wewnętrzne mechanizmy typów generycznych
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Reprezentacja typów generycznych w kodzie CIL
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Tworzenie obiektów typów generycznych opartych na typach bezpośrednich
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Tworzenie obiektów typów generycznych opartych na typach referencyjnych
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Podsumowanie
- Język C# bez typów generycznych
- 13. Delegaty i wyrażenia lambda
- Wprowadzenie do delegatów
- Opis scenariusza
- Typ danych w postaci delegata
- Deklarowanie typu delegata
- Typy delegatów do ogólnego użytku System.Func i System.Action
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Deklarowanie typu delegata
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Tworzenie instancji delegata
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Tworzenie instancji delegatów w wersji C# 1.0
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wewnętrzne mechanizmy delegatów
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Typy delegatów do ogólnego użytku System.Func i System.Action
- Wyrażenia lambda
- Lambdy w postaci instrukcji
- Lambdy w postaci wyrażeń
- Metody anonimowe
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Bezparametrowe metody anonimowe
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Skąd się wzięła nazwa lambda?
- Delegaty nie zapewniają równości strukturalnej
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wewnętrzne mechanizmy wyrażeń lambda i metod anonimowych
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Zmienne zewnętrzne
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Implementacja zmiennych zewnętrznych w kodzie CIL
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Przypadkowe przechwytywanie zmiennych z pętli
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Drzewo wyrażeń
- Używanie wyrażeń lambda jako danych
- Drzewa wyrażeń są grafami obiektów
- Delegaty a drzewa wyrażeń
- Badanie drzewa wyrażeń
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Podsumowanie
- Wprowadzenie do delegatów
- 14. Zdarzenia
- Implementacja wzorca publikuj-subskrybuj za pomocą delegatów typu multicast
- Definiowanie metod subskrybujących
- Definiowanie klasy publikującej zdarzenia
- Łączenie subskrybentów z nadawcą
- Wywoływanie delegata
- Sprawdzanie, czy wartość jest różna od null
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Operator = delegatów zwraca nową instancję
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wywoływanie delegata z zachowaniem bezpieczeństwa ze względu na wątki
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Operatory używane do delegatów
- Wywołania sekwencyjne
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wewnętrzne mechanizmy delegatów typu multicast
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Obsługa błędów
- Wartości zwracane przez metodę i przekazywanie danych przez referencję
- Zdarzenia
- Po co stosować zdarzenia?
- Hermetyzacja subskrypcji
- Hermetyzacja procesu publikacji
- Deklarowanie zdarzeń
- Konwencje programistyczne
- Typy generyczne a delegaty
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wewnętrzne mechanizmy zdarzeń
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Modyfikowanie implementacji zdarzeń
- Po co stosować zdarzenia?
- Podsumowanie
- Implementacja wzorca publikuj-subskrybuj za pomocą delegatów typu multicast
- 15. Interfejsy kolekcji ze standardowymi operatorami kwerend
- Inicjatory kolekcji
- Interfejs IEnumerable<T> sprawia, że klasa staje się kolekcją
- Instrukcja foreach dla tablic
- Instrukcja foreach dla interfejsu IEnumerable<T>
- Współdzielony stan
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Porządkowanie zasobów po iteracji
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Pętla foreach bez interfejsu IEnumerable
- Nie modyfikuj kolekcji w trakcie iterowania z wykorzystaniem pętli foreach
- Standardowe operatory kwerend
- Filtrowanie danych za pomocą metody Where()
- Projekcje z wykorzystaniem metody Select()
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Równoległe wykonywanie kwerend w technologii LINQ
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Zliczanie elementów za pomocą metody Count()
- Opóźnione wykonanie
- Sortowanie z wykorzystaniem metod OrderBy() i ThenBy()
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Złączanie
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Przeprowadzanie złączania wewnętrznego za pomocą instrukcji Join()
- Grupowanie wyników za pomocą metody GroupBy()
- Implementowanie relacji jeden do wielu za pomocą metody GroupJoin()
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Implementowanie złączeń zewnętrznych za pomocą metody GroupJoin()
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wywoływanie metody SelectMany()
- Inne standardowe operatory kwerend
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Klasa Queryable z metodami rozszerzającymi interfejs IQueryable<T>
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Typy anonimowe w technologii LINQ
- Typy anonimowe
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Zmienne lokalne o niejawnie określanym typie (zmienne var)
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Pobieranie danych do zmiennych typu anonimowego za pomocą technologii LINQ
- Więcej o typach anonimowych i zmiennych lokalnych o niejawnie określanym typie
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Generowanie typów anonimowych
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Inicjatory kolekcji a typy anonimowe
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Typy anonimowe
- Podsumowanie
- 16. Technologia LINQ i wyrażenia z kwerendami
- Wprowadzenie do wyrażeń z kwerendami
- Projekcja
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Opóźnione wykonywanie wyrażeń z kwerendą
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Implementacja opóźnionego wykonywania
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Filtrowanie
- Sortowanie
- Klauzula let
- Grupowanie
- Kontynuowanie kwerendy za pomocą klauzuli into
- Spłaszczanie sekwencji składających się z sekwencji za pomocą kilku klauzul from
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Niepowtarzalne elementy
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Projekcja
- Wyrażenia z kwerendą to tylko wywołania metod
- Podsumowanie
- Wprowadzenie do wyrażeń z kwerendami
- 17. Tworzenie niestandardowych kolekcji
- Inne interfejsy implementowane w kolekcjach
- Porównanie interfejsów IList<T> i IDictionary<TKey, TValue>
- Interfejs ICollection<T>
- Podstawowe klasy kolekcji
- Kolekcje w postaci list List<T>
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Modyfikowanie procesu sortowania kolekcji
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Porządkowanie całkowite
- Przeszukiwanie kolekcji typu List<T>
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wyszukiwanie wielu elementów za pomocą metody FindAll()
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Kolekcje w postaci słownika Dictionary<TKey, TValue>
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Modyfikowanie sprawdzania równości w słowniku
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Wymogi związane ze...
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Kolekcje w postaci list List<T>
- Inne interfejsy implementowane w kolekcjach
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-5781-5 |
Rozmiar pliku: | 6,7 MB |