C# 7.0. Kompletny przewodnik dla praktyk贸w. Wydanie VI - Helion
Autor: Mark Michaelis
Tytu艂 orygina艂u: Essential C# 7.0 (6th Edition)
ISBN: 978-83-283-5780-8
ok艂adka: mi臋kka
Data wydania: 2019-07-01
Ksi臋garnia: Helion
Cena ksi膮偶ki: 129,00 z艂
Tytu艂 orygina艂u: Essential C# 7.0 (6th Edition)
ISBN: 978-83-283-5780-8
ok艂adka: mi臋kka
Data wydania: 2019-07-01
Ksi臋garnia: Helion
Cena ksi膮偶ki: 129,00 z艂
Osoby kt贸re kupowa艂y "C# 7.0. Kompletny przewodnik dla praktyk贸w. Wydanie VI", wybiera艂y tak偶e:
- Windows Media Center. Domowe centrum rozrywki 66,67 z艂, (8,00 z艂 -88%)
- Ruby on Rails. 膯wiczenia 18,75 z艂, (3,00 z艂 -84%)
- Efekt piaskownicy. Jak szefowa膰 偶eby roboty nie zabra艂y ci roboty 59,50 z艂, (11,90 z艂 -80%)
- Przyw贸dztwo w 艣wiecie VUCA. Jak by膰 skutecznym liderem w niepewnym 艣rodowisku 58,64 z艂, (12,90 z艂 -78%)
- Scrum. O zwinnym zarz膮dzaniu projektami. Wydanie II rozszerzone 58,64 z艂, (12,90 z艂 -78%)
Spis tre艣ci
C# 7.0. Kompletny przewodnik dla praktyk贸w. Wydanie VI -- 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 sprawdzaniem r贸wno艣ci
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Kolekcje posortowane SortedDictionary<TKey, TValue> i SortedList<T>
- Kolekcje w postaci stosu Stack<T>
- Kolekcje w postaci kolejek Queue<T>
- Listy powi膮zane LinkedList<T>
- Kolekcje w postaci list List<T>
- Udost臋pnianie indeksera
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Okre艣lanie nazwy indeksera za pomoc膮 atrybutu IndexerName
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Definiowanie operatora indeksowania przyjmuj膮cego r贸偶n膮 liczb臋 parametr贸w
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Zwracanie warto艣ci null lub pustej kolekcji
- Iteratory
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Pocz膮tki iterator贸w
- Definiowanie iteratora
- Sk艂adnia iteratora
- Zwracanie warto艣ci przez iterator
- Iteratory i stan
- Inne przyk艂adowe iteratory
- Umieszczanie instrukcji yield return w p臋tli
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Zagro偶enia zwi膮zane z iteratorami rekurencyjnymi
- ZAGADNIENIE DLA POCZ膭TKUJ膭CYCH
- Struktury a klasy
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Anulowanie dalszych iteracji za pomoc膮 instrukcji yield break
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Jak dzia艂aj膮 iteratory
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Kontekstowe s艂owa kluczowe
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Tworzenie wielu identyfikator贸w w jednej klasie
- Wymagania zwi膮zane z instrukcj膮 yield
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Podsumowanie
- Inne interfejsy implementowane w kolekcjach
- 18. Refleksja, atrybuty i programowanie dynamiczne
- Mechanizm refleksji
- Dost臋p do metadanych za pomoc膮 obiektu typu System.Type
- Metoda GetType()
- Operator typeof()
- Wywo艂ywanie sk艂adowych
- Refleksja dotycz膮ca typ贸w generycznych
- Ustalanie typ贸w podanych w parametrach okre艣laj膮cych typ
- Okre艣lanie, czy klasa lub metoda ma parametry generyczne
- Pobieranie parametr贸w okre艣laj膮cych typ z klas lub metod generycznych
- Dost臋p do metadanych za pomoc膮 obiektu typu System.Type
- Operator nameof
- Atrybuty
- Niestandardowe atrybuty
- Wyszukiwanie atrybut贸w
- Inicjowanie atrybutu za pomoc膮 konstruktora
- Atrybut System.AttributeUsageAttribute
- Parametry nazwane
- ZAGADNIENIE DLA POCZ膭TKUJ膭CYCH
- Atrybut FlagsAttribute
- Predefiniowane atrybuty
- Atrybut System.ConditionalAttribute
- Atrybut System.ObsoleteAttribute
- Atrybuty zwi膮zane z serializacj膮
- Atrybut System.NonSerializable
- Udost臋pnianie niestandardowej serializacji
- Zarz膮dzanie wersjami w trakcie serializacji
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Atrybut System.SerializableAttribute i kod CIL
- ZAGADNIENIE DLA POCZ膭TKUJ膭CYCH
- Programowanie z wykorzystaniem obiekt贸w dynamicznych
- Korzystanie z refleksji za pomoc膮 instrukcji dynamic
- Zasady i operacje zwi膮zane z typem dynamic
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Om贸wienie typu dynamic
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Po co stosowa膰 wi膮zanie dynamiczne?
- Statyczna kompilacja a programowanie dynamiczne
- Tworzenie niestandardowych obiekt贸w dynamicznych
- Podsumowanie
- Mechanizm refleksji
- 19. Wielow膮tkowo艣膰
- Podstawy wielow膮tkowo艣ci
- ZAGADNIENIE DLA POCZ膭TKUJ膭CYCH
- S艂ownictwo zwi膮zane z wielow膮tkowo艣ci膮
- ZAGADNIENIE DLA POCZ膭TKUJ膭CYCH
- Co, jak i dlaczego w dziedzinie wielow膮tkowo艣ci
- ZAGADNIENIE DLA POCZ膭TKUJ膭CYCH
- Uwagi dotycz膮ce wydajno艣ci
- ZAGADNIENIE DLA POCZ膭TKUJ膭CYCH
- Problemy z w膮tkami
- Wi臋kszo艣膰 operacji nie jest atomowa
- Niepewno艣膰 spowodowana sytuacj膮 wy艣cigu
- Modele zarz膮dzania pami臋ci膮 s膮 skomplikowane
- Blokady mog膮 skutkowa膰 zakleszczeniem
- Problemy z w膮tkami
- ZAGADNIENIE DLA POCZ膭TKUJ膭CYCH
- U偶ywanie klasy System.Threading
- Wykonywanie operacji asynchronicznych za pomoc膮 klasy System.Threading.Thread
- Zarz膮dzanie w膮tkami
- Nie usypiaj w膮tk贸w w kodzie produkcyjnym
- Nie usuwaj w膮tk贸w w kodzie produkcyjnym
- Pule w膮tk贸w
- Zadania asynchroniczne
- Od w膮tk贸w do zada艅
- Wprowadzenie do asynchronicznych zada艅
- Kontynuacja zadania
- U偶ywanie wyj膮tk贸w AggregateException do obs艂ugi nieobs艂u偶onych wyj膮tk贸w w zadaniach
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Radzenie sobie z nieobs艂u偶onymi wyj膮tkami w w膮tku
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Anulowanie zadania
- Task.Run() skr贸cona i uproszczona wersja wywo艂ania Task.Factory.StartNew()
- D艂ugotrwa艂e zadania
- Zadania pozwalaj膮 zwalnia膰 zasoby
- Wzorzec obs艂ugi asynchroniczno艣ci za pomoc膮 zada艅
- Synchroniczne wywo艂ywanie operacji o du偶ej latencji
- Asynchroniczne wywo艂ywanie operacji o du偶ej latencji za pomoc膮 biblioteki TPL
- Asynchroniczno艣膰 oparta na zadaniach oraz instrukcjach async i await
- Zwracanie warto艣ci w metodach asynchronicznych
- Dodanie mo偶liwo艣ci zwracania typu ValueTask<T> w metodach asynchronicznych
- Zwracanie warto艣ci void w metodach asynchronicznych
- Asynchroniczne lambdy i funkcje lokalne
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Tworzenie niestandardowej metody asynchronicznej
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Oczekiwanie na warto艣ci inne ni偶 obiekt typu Task<T>
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Programy szereguj膮ce zadania i kontekst synchronizacji
- Modyfikatory async i await w programach z interfejsem u偶ytkownika z systemu Windows
- Operatory await
- R贸wnoleg艂e wykonywanie iteracji p臋tli
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- W jaki spos贸b biblioteka TPL dostraja wydajno艣膰
- ZAGADNIENIE DLA POCZ膭TKUJ膭CYCH
- U偶ywanie typu AggregateException do obs艂ugi wyj膮tk贸w w p臋tlach r贸wnoleg艂ych
- Anulowanie wykonywania p臋tli r贸wnoleg艂ej
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Opcje p臋tli r贸wnoleg艂ych
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wychodzenie z p臋tli r贸wnoleg艂ej
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- R贸wnoleg艂e wykonywanie kwerend LINQ
- Anulowanie kwerendy PLINQ
- Podsumowanie
- Podstawy wielow膮tkowo艣ci
- 20. Synchronizowanie w膮tk贸w
- Po co stosowa膰 synchronizacj臋?
- ZAGADNIENIE DLA POCZ膭TKUJ膭CYCH
- Wiele w膮tk贸w i zmienne lokalne
- Synchronizacja z wykorzystaniem klasy Monitor
- Stosowanie s艂owa kluczowego lock
- ZAGADNIENIE DLA POCZ膭TKUJ膭CYCH
- Zwracanie obiektu typu Task bez operatora await
- ZAGADNIENIE DLA POCZ膭TKUJ膭CYCH
- Wybieranie obiektu reprezentuj膮cego blokad臋
- Dlaczego nale偶y unika膰 blokad opartych na s艂owie kluczowym this, wyra偶eniu typeof(typ) lub typie string?
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Unikaj synchronizacji z wykorzystaniem atrybutu MethodImplAttribute
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Deklarowanie p贸l jako zmiennych (volatile)
- Stosowanie klasy System.Threading.Interlocked
- Powiadomienia o zdarzeniach kierowane do wielu w膮tk贸w
- Najlepsze praktyki z obszaru projektowania synchronizacji
- Unikanie zakleszczenia
- Kiedy nale偶y zapewnia膰 synchronizacj臋?
- Unikanie zb臋dnych blokad
- Inne typy zwi膮zane z synchronizacj膮
- Korzystanie z klasy System.Threading.Mutex
- Klasa WaitHandle
- Zdarzenia resetuj膮ce ManualResetEvent i ManualResetEventSlim
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Przedk艂adaj typ ManualResetEvent i semafory nad typ AutoResetEvent
- Typy Semaphore, SemaphoreSlim i CountdownEvent
- Klasy kolekcji przetwarzanych r贸wnolegle
- Pami臋膰 lokalna w膮tk贸w
- ThreadLocal<T>
- Pami臋膰 lokalna w膮tku tworzona za pomoc膮 atrybutu ThreadStaticAttribute
- ZAGADNIENIE DLA POCZ膭TKUJ膭CYCH
- Zegary
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Kontrolowanie modelu w膮tkowego w technologii COM za pomoc膮 atrybutu STAThreadAttribute
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Podsumowanie
- Po co stosowa膰 synchronizacj臋?
- 21. Wsp贸艂dzia艂anie mi臋dzy platformami i niezabezpieczony kod
- Mechanizm P/Invoke
- Deklarowanie funkcji zewn臋trznych
- Typy danych parametr贸w
- Stosowanie parametr贸w ref zamiast wska藕nik贸w
- U偶ywanie atrybutu StructLayoutAttribute do zapewniania uk艂adu sekwencyjnego
- Obs艂uga b艂臋d贸w
- U偶ywanie typu SafeHandle
- Wywo艂ywanie funkcji zewn臋trznych
- Upraszczanie wywo艂a艅 interfejs贸w API za pomoc膮 nak艂adek
- Odwzorowywanie wska藕nik贸w do funkcji na delegaty
- Wskaz贸wki
- Wska藕niki i adresy
- Kod niezabezpieczony
- Deklarowanie wska藕nik贸w
- Przypisywanie warto艣ci do wska藕nik贸w
- Zapewnianie sta艂ej lokalizacji danych
- Alokowanie danych na stosie
- Dereferencja wska藕nik贸w
- Dost臋p do sk艂adowych typu docelowego
- Wykonywanie niezabezpieczonego kodu za pomoc膮 delegata
- Podsumowanie
- Mechanizm P/Invoke
- 22. Standard CLI
- Definiowanie standardu CLI
- Implementacje standardu CLI
- Microsoft .NET Framework
- .NET Core
- Xamarin
- Specyfikacja .NET Standard
- Biblioteka BCL
- Kompilacja kodu w j臋zyku C# na kod maszynowy
- 艢rodowisko uruchomieniowe
- Odzyskiwanie pami臋ci
- Odzyskiwanie pami臋ci w platformie .NET
- Bezpiecze艅stwo ze wzgl臋du na typ
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Omijanie hermetyzacji i modyfikator贸w dost臋pu
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Przeno艣no艣膰 mi臋dzy platformami
- Wydajno艣膰
- Podzespo艂y, manifesty i modu艂y
- J臋zyk Common Intermediate Language
- Common Type System
- Common Language Specification
- Metadane
- Architektura .NET Native i kompilacja AOT
- Podsumowanie