Categories
Ebooks
-
Business and economy
- Bitcoin
- Businesswoman
- Coaching
- Controlling
- E-business
- Economy
- Finances
- Stocks and investments
- Personal competence
- Computer in the office
- Communication and negotiation
- Small company
- Marketing
- Motivation
- Multimedia trainings
- Real estate
- Persuasion and NLP
- Taxes
- Social policy
- Guides
- Presentations
- Leadership
- Public Relation
- Reports, analyses
- Secret
- Social Media
- Sales
- Start-up
- Your career
- Management
- Project management
- Human Resources
-
For children
-
For youth
-
Education
-
Encyclopedias, dictionaries
-
E-press
- Architektura i wnętrza
- Biznes i Ekonomia
- Home and garden
- E-business
- Finances
- Personal finance
- Business
- Photography
- Computer science
- HR & Payroll
- Computers, Excel
- Accounts
- Culture and literature
- Scientific and academic
- Environmental protection
- Opinion-forming
- Education
- Taxes
- Travelling
- Psychology
- Religion
- Agriculture
- Book and press market
- Transport and Spedition
- Healthand beauty
-
History
-
Computer science
- Office applications
- Data bases
- Bioinformatics
- IT business
- CAD/CAM
- Digital Lifestyle
- DTP
- Electronics
- Digital photography
- Computer graphics
- Games
- Hacking
- Hardware
- IT w ekonomii
- Scientific software package
- School textbooks
- Computer basics
- Programming
- Mobile programming
- Internet servers
- Computer networks
- Start-up
- Operational systems
- Artificial intelligence
- Technology for children
- Webmastering
-
Other
-
Foreign languages
-
Culture and art
-
School reading books
-
Literature
- Antology
- Ballade
- Biographies and autobiographies
- For adults
- Dramas
- Diaries, memoirs, letters
- Epic, epopee
- Essay
- Fantasy and science fiction
- Feuilletons
- Work of fiction
- Humour and satire
- Other
- Classical
- Crime fiction
- Non-fiction
- Fiction
- Mity i legendy
- Nobelists
- Novellas
- Moral
- Okultyzm i magia
- Short stories
- Memoirs
- Travelling
- Narrative poetry
- Poetry
- Politics
- Popular science
- Novel
- Historical novel
- Prose
- Adventure
- Journalism, publicism
- Reportage novels
- Romans i literatura obyczajowa
- Sensational
- Thriller, Horror
- Interviews and memoirs
-
Natural sciences
-
Social sciences
-
School textbooks
-
Popular science and academic
- Archeology
- Bibliotekoznawstwo
- Cinema studies
- Philology
- Polish philology
- Philosophy
- Finanse i bankowość
- Geography
- Economy
- Trade. World economy
- History and archeology
- History of art and architecture
- Cultural studies
- Linguistics
- Literary studies
- Logistics
- Maths
- Medicine
- Humanities
- Pedagogy
- Educational aids
- Popular science
- Other
- Psychology
- Sociology
- Theatre studies
- Theology
- Economic theories and teachings
- Transport i spedycja
- Physical education
- Zarządzanie i marketing
-
Guides
-
Game guides
-
Professional and specialist guides
-
Law
- Health and Safety
- History
- Road Code. Driving license
- Law studies
- Healthcare
- General. Compendium of knowledge
- Academic textbooks
- Other
- Construction and local law
- Civil law
- Financial law
- Economic law
- Economic and trade law
- Criminal law
- Criminal law. Criminal offenses. Criminology
- International law
- International law
- Health care law
- Educational law
- Tax law
- Labor and social security law
- Public, constitutional and administrative law
- Family and Guardianship Code
- agricultural law
- Social law, labour law
- European Union law
- Industry
- Agricultural and environmental
- Dictionaries and encyclopedia
- Public procurement
- Management
-
Tourist guides and travel
- Africa
- Albums
- Southern America
- North and Central America
- Australia, New Zealand, Oceania
- Austria
- Asia
- Balkans
- Middle East
- Bulgary
- China
- Croatia
- The Czech Republic
- Denmark
- Egipt
- Estonia
- Europe
- France
- Mountains
- Greece
- Spain
- Holand
- Iceland
- Lithuania
- Latvia
- Mapy, Plany miast, Atlasy
- Mini travel guides
- Germany
- Norway
- Active travelling
- Poland
- Portugal
- Other
- Russia
- Romania
- Slovakia
- Slovenia
- Switzerland
- Sweden
- World
- Turkey
- Ukraine
- Hungary
- Great Britain
- Italy
-
Psychology
- Philosophy of life
- Kompetencje psychospołeczne
- Interpersonal communication
- Mindfulness
- General
- Persuasion and NLP
- Academic psychology
- Psychology of soul and mind
- Work psychology
- Relacje i związki
- Parenting and children psychology
- Problem solving
- Intellectual growth
- Secret
- Sexapeal
- Seduction
- Appearance and image
- Philosophy of life
-
Religion
-
Sport, fitness, diets
-
Technology and mechanics
Audiobooks
-
Business and economy
- Bitcoin
- Businesswoman
- Coaching
- Controlling
- E-business
- Economy
- Finances
- Stocks and investments
- Personal competence
- Communication and negotiation
- Small company
- Marketing
- Motivation
- Real estate
- Persuasion and NLP
- Taxes
- Guides
- Presentations
- Leadership
- Public Relation
- Secret
- Social Media
- Sales
- Start-up
- Your career
- Management
- Project management
- Human Resources
-
For children
-
For youth
-
Education
-
Encyclopedias, dictionaries
-
History
-
Computer science
-
Other
-
Foreign languages
-
Culture and art
-
School reading books
-
Literature
- Antology
- Ballade
- Biographies and autobiographies
- For adults
- Dramas
- Diaries, memoirs, letters
- Epic, epopee
- Essay
- Fantasy and science fiction
- Feuilletons
- Work of fiction
- Humour and satire
- Other
- Classical
- Crime fiction
- Non-fiction
- Fiction
- Mity i legendy
- Nobelists
- Novellas
- Moral
- Okultyzm i magia
- Short stories
- Memoirs
- Travelling
- Poetry
- Politics
- Popular science
- Novel
- Historical novel
- Prose
- Adventure
- Journalism, publicism
- Reportage novels
- Romans i literatura obyczajowa
- Sensational
- Thriller, Horror
- Interviews and memoirs
-
Natural sciences
-
Social sciences
-
Popular science and academic
-
Guides
-
Professional and specialist guides
-
Law
-
Tourist guides and travel
-
Psychology
- Philosophy of life
- Interpersonal communication
- Mindfulness
- General
- Persuasion and NLP
- Academic psychology
- Psychology of soul and mind
- Work psychology
- Relacje i związki
- Parenting and children psychology
- Problem solving
- Intellectual growth
- Secret
- Sexapeal
- Seduction
- Appearance and image
- Philosophy of life
-
Religion
-
Sport, fitness, diets
-
Technology and mechanics
Videocourses
-
Data bases
-
Big Data
-
Biznes, ekonomia i marketing
-
Cybersecurity
-
Data Science
-
DevOps
-
For children
-
Electronics
-
Graphics/Video/CAX
-
Games
-
Microsoft Office
-
Development tools
-
Programming
-
Personal growth
-
Computer networks
-
Operational systems
-
Software testing
-
Mobile devices
-
UX/UI
-
Web development
-
Management
Podcasts
- Ebooks
- Programming
- C#
- C# 7.0. Kompletny przewodnik dla praktyków. Wydanie VI
E-book details
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!
- 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
- Title: C# 7.0. Kompletny przewodnik dla praktyków. Wydanie VI
- Author: Mark Michaelis
- Original title: Essential C# 7.0 (6th Edition)
- Translation: Tomasz Walczak
- ISBN: 978-83-283-5781-5, 9788328357815
- Date of issue: 2019-11-19
- Format: Ebook
- Item ID: c7kop6
- Publisher: Helion