C# 7.0. Kompletny przewodnik dla praktyków. Wydanie VI
- Autor:
- Mark Michaelis
- Wydawnictwo:
- Helion
- Wydawnictwo:
- Helion
- Ocena:
- 5.5/6 Opinie: 6
- Stron:
- 840
- Druk:
- oprawa twarda
- Dostępne formaty:
-
PDFePubMobi
![Wyłącznie](https://static01.helion.com.pl/ebookpoint/img/img_wylacznie.png)
Sprawdź nowe wydanie
C# 8.0. Kompletny przewodnik dla praktyków. Wydanie VII
Mark Michaelis
Opis ebooka: C# 7.0. Kompletny przewodnik dla praktyków. Wydanie VI
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!
Z przedmową Madsa Torgersena, menedżera ds. prac nad językiem C# w Microsofcie
"Ta książka jest klasykiem od lat i pozostaje jedną z najbardziej cenionych i wiarygodnych pozycji w świecie języka C#, a zapewne także i poza nim".
Mads Torgersen
Kompletny przewodnik po programowaniu w języku C# dla ekspertów
"Ta książka jest klasykiem od lat i pozostaje jedną z najbardziej cenionych i wiarygodnych pozycji w świecie języka C#, a zapewne także i poza nim! [...] Mark jest niezwykle inteligentny, stara się szczegółowo zrozumieć każde zagadnienie i ma fantastyczny wgląd w to, jak rozwiązania wpływają na pracę programistów [...] Dociera do sedna sprawy i przekazuje informacje niezwykle rzetelnie, bez upiększania. Ponadto trafnie dostrzega praktyczną wartość technologii i związane z nimi praktyczne problemy".
Mads Torgersen, menedżer ds. prac nad językiem C# w Microsofcie
C#. Kompletny przewodnik dla praktyków to dobrze uporządkowany i konkretny podręcznik języka C# 7.0 przeznaczony dla programistów o różnym poziomie doświadczenia. Opisano tu najważniejsze cechy języka C# (wersje od 3.0 do 7.0) z uwzględnieniem nowych wzorców programowania. Książka ta pomoże Ci w pisaniu kodu, który jest prosty, skuteczny, odporny na problemy, bezpieczny i łatwy w konserwacji.
W tej książce Michaelis zawarł kompletny przewodnik i encyklopedyczny przegląd całego języka, a także eksperckie omówienie kluczowych usprawnień z wersji C# 7.0, używanie C# 7.0 z platformą .NET Core i specyfikacją .NET Standard oraz kompilację na potrzeby różnych systemów. Najważniejsze mechanizmy języka C# zostały zilustrowane zwięzłymi przykładami. Zaprezentowano też najlepsze praktyki z zakresu programowania. Aby pomóc w konserwacji istniejącego kodu, w osobnych indeksach umieszczono zagadnienia specyficzne dla wersji 5.0, 6.0 i 7.0. Dodano też graficzne symbole informujace o wersjach języka, w jakich wprowadzono określone innowacje.
- Optymalnie wykorzystaj usprawnienia z języka C# 7.0, w tym krotki, dekonstruktory, dopasowywanie do wzorców, funkcje lokalne i zwracanie wartości przez referencję.
- Wydajnie korzystaj z typów danych, operatorów, mechanizmów przepływu sterowania, metod i parametrów w języku C#.
- Pisz odporniejszy na problemy kod za pomocą obiektowych mechanizmów języka C#.
- Implementuje niezawodną i skuteczną obsługę błędów.
- Ogranicz złożoność kodu za pomocą typów generycznych, delegatów, wyrażeń lambda i zdarzeń.
- Stosuj zaawansowane techniki programowania dynamicznego i deklaratywnego.
- Kieruj zapytania o różnorodne kolekcje danych za pomocą technologii LINQ i wyrażeń z kwerendami.
- Twórz niestandardowe kolekcje używane razem z obiektami biznesowymi.
- Uzyskaj dostęp do kolekcji platformy .NET za pomocą interfejsów kolekcji i standardowych operatorów kwerend.
- Opanuj wielowątkowość i synchronizację, w tym model oparty na słowach async i await.
- Zoptymalizuj wydajność i współdziałanie z innymi językami za pomocą technologii P/Invoke i niezabezpieczonego kodu.
- Uruchamiaj kod w systemach Linux i macOS dzięki dostępnej w C# 7.0 kompilacji dla różnych systemów.
- Poznaj usprawnienia wprowadzone w wersjach C# 7.1, 7.2 i 7.3.
Ten przewodnik zapewni Ci wszystkie informacje potrzebne do skutecznego programowania z użyciem nowych wersji języka C# w dowolnych projektach i środowiskach.
![Czytelniczy kiermasz na koniec wakacji / Książki -40%, Ebooki -50%](https://static01.helion.com.pl/ebookpoint/img/promocje/bannery/19985/box_1180x419_SM_ebp_czytelniczy_kiermasz_na_koniec_wakacji_f597d2a57.jpg)
Wybrane bestsellery
-
To siódme, zaktualizowane i uzupełnione wydanie jednego z najlepszych podręczników programowania, docenianego przez programistów na każdym poziomie zaawansowania. Poza znakomitym samouczkiem języka C# znalazły się tu informacje o poszczególnych metodykach programowania. Książka zawiera także omów...(74.50 zł najniższa cena z 30 dni)
74.50 zł
149.00 zł(-50%) -
Niniejsza książka to bardzo praktyczne kompendium wiedzy o języku C#. Została oparta na podstawowej specyfikacji C# Language 6.0. Zawiera kompletne omówienie języka. Książkę pomyślano jako podręcznik, dzięki któremu szybko można rozpocząć praktyczną pracę nad projektami programistycznymi. Osoby z...(77.40 zł najniższa cena z 30 dni)
77.40 zł
129.00 zł(-40%) -
Explore the essentials of C# programming and algorithmic thinking in this beginner-friendly course by Aristides Bouras. Understand how a computer works, delve into development environments, and tackle complex programming challenges step-by-step.
-
C# is undeniably one of the most versatile programming languages available to engineers today. With this comprehensive guide, you'll learn just how powerful the combination of C# and .NET can be. Author Ian Griffiths guides you through C# 12.0 and .NET 8 fundamentals and techniques for building c...(228.33 zł najniższa cena z 30 dni)
228.13 zł
279.00 zł(-18%) -
This hands-on guide takes you on a journey through popular design patterns, all while crafting engaging and optimized Unity games! Learn industry best practices for efficient and reusable code, a critical skill for creating maintainable software.
-
Utrzymanie czystego kodu ułatwia pracę programistom i przyczynia się do szybszego reagowania na potrzeby odbiorców i wdrażania nowych funkcji. Większa efektywność zespołów programistycznych jest nieoceniona dla funkcjonowania firm. Pozwala zminimalizować ryzyko poważnych awarii i pozytywnie wpływ...(67.60 zł najniższa cena z 30 dni)
67.60 zł
169.00 zł(-60%) -
Jeśli szukasz źródła błyskawicznych odpowiedzi na pytania, jakie się pojawiają podczas pracy z C#, ta książka sprawdzi się idealnie! Została pomyślana tak, aby maksymalnie ułatwić przeglądanie i odnajdywanie potrzebnych treści — jest precyzyjnym, zwięzłym i niezwykle praktycznym przewodniki...(29.94 zł najniższa cena z 30 dni)
29.94 zł
49.90 zł(-40%)
O autorze ebooka
Mark Michaelis jest autorytetem w dziedzinie tworzenia zaawansowanego oprogramowania. Zabiera głos na prestiżowych konferencjach dla programistów. Obecnie prowadzi kolumnę Essential .NET w „MSDN Magazine”. Od 1996 roku posiada tytuł Microsoft MVP. W 2007 roku został dyrektorem regionalnym Microsoftu, jest też członkiem kilku zespołów oceniających projekty oprogramowania tej firmy (między innymi języka C# i technologii VSTS).
Ebooka "C# 7.0. Kompletny przewodnik dla praktyków. Wydanie VI" przeczytasz na:
-
czytnikach Inkbook, Kindle, Pocketbook, Onyx Boox i innych
-
systemach Windows, MacOS i innych
-
systemach Windows, Android, iOS, HarmonyOS
-
na dowolnych urządzeniach i aplikacjach obsługujących formaty: PDF, EPub, Mobi
Masz pytania? Zajrzyj do zakładki Pomoc »
Audiobooka "C# 7.0. Kompletny przewodnik dla praktyków. Wydanie VI" posłuchasz:
-
w aplikacji Ebookpoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych
-
na dowolnych urządzeniach i aplikacjach obsługujących format MP3 (pliki spakowane w ZIP)
Masz pytania? Zajrzyj do zakładki Pomoc »
Kurs Video "C# 7.0. Kompletny przewodnik dla praktyków. Wydanie VI" zobaczysz:
-
w aplikacjach Ebookpoint i Videopoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych z dostępem do najnowszej wersji Twojej przeglądarki internetowej
Szczegóły ebooka
- Tytuł oryginału:
- Essential C# 7.0 (6th Edition)
- Tłumaczenie:
- Tomasz Walczak
- ISBN Książki drukowanej:
- 978-83-283-5780-8, 9788328357808
- Data wydania książki drukowanej:
- 2019-11-19
- ISBN Ebooka:
- 978-83-283-5781-5, 9788328357815
- Data wydania ebooka:
-
2019-11-19
Data wydania ebooka często jest dniem wprowadzenia tytułu do sprzedaży i może nie być równoznaczna z datą wydania książki papierowej. Dodatkowe informacje możesz znaleźć w darmowym fragmencie. Jeśli masz wątpliwości skontaktuj się z nami sklep@ebookpoint.pl.
- Format:
- 164x239
- Numer z katalogu:
- 94415
- Rozmiar pliku Pdf:
- 6.7MB
- Rozmiar pliku ePub:
- 7.2MB
- Rozmiar pliku Mobi:
- 18.0MB
- Przykłady na ftp
Ebook zawiera materiały dodatkowe, które możesz pobrać z serwera FTP - link znajdziesz na stronie redakcyjnej.
Spis treści ebooka
- 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, edytowanie, kompilowanie i uruchamianie kodu źródłowego w języku C#
- Tworzenie projektu
- Kompilowanie i wykonywanie kodu
- Kod źródłowy do książki C# 7.0
- Używanie Dotnet CLI
- Używanie Visual Studio
- Witaj, świecie
- Podstawy składni języka C#
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Słowa kluczowe
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- 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 POCZĄTKUJĄCYCH
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Deklaracja metody Main
- Instrukcje i ograniczniki instrukcji
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Instrukcje bez średników
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Czym są odstępy?
- Odstępy
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Formatowanie kodu za pomocą odstępów
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Korzystanie ze zmiennych
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Zmienne lokalne
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- 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
- Dane wejściowe i wyjściowe w konsoli
- Pobieranie danych wejściowych z konsoli
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Metoda System.Console.Read()
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Pobieranie danych wejściowych z konsoli
- Wyświetlanie danych wyjściowych w konsoli
- Komentarze
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- XML
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- 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
- 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
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Notacja szesnastkowa
- Podstawowe typy liczbowe
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wyświetlanie liczb w formacie szesnastkowym
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Formatowanie dwustronne
- Inne podstawowe typy
- Typ logiczny (bool)
- Typ znakowy (char)
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Standard Unicode
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- 16 bitów nie wystarcza do przedstawienia wszystkich znaków Unicode
- Ł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
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Konwersja niejawna
- Jawne rzutowanie
- Konwersja typów bez rzutowania
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Metoda TryParse()
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Podsumowanie
- 3. Jeszcze o typach danych
- Kategorie typów
- Typy bezpośrednie
- Typy referencyjne
- Kategorie typów
- 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
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- 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
- Podsumowanie
- Operatory i przepływ sterowania
- Operatory
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Operatory
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Operatory jednoargumentowe plus (+) i minus ()
- Arytmetyczne operatory dwuargumentowe (+, , *, /, %)
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Nawiasy, łączność, priorytety i określanie wartości
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- 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
- Operatory
- Złożone operatory przypisania (+=, =, *=, /=, %=)
- Operatory inkrementacji i dekrementacji (++, )
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Przykładowa dekrementacja w pętli
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Inkrementacja i dekrementacja bezpieczna ze względu na wątki
- Wyrażenia o stałej wartości i stałe lokalne
- 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
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- 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 (~)
- 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ętle while i do/while
- 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
- Instrukcje skoku
- Instrukcja break
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Sprawdzanie pozycji za pomocą operatorów bitowych
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Instrukcja break
- Instrukcja continue
- Instrukcja goto
- 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
- 5. Metody i parametry
- Wywoływanie metody
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Czym jest metoda?
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Przestrzenie nazw
- Nazwa typu
- Zasięg
- Nazwa metody
- Parametry i argumenty
- Wartości zwracane przez metody
- Instrukcje a wywołania metod
- Wywoływanie metody
- Deklarowanie metody
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Refaktoryzacja kodu przez umieszczanie go w metodach
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- 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
- Dyrektywa using
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Zagnieżdżone dyrektywy using
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Dyrektywa using static
- Tworzenie aliasów
- Zwracane wartości i parametry metody Main()
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Odróżnianie od siebie różnych metod Main()
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Stos wywołań i miejsce wywołania
- 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 POCZĄTKUJĄCYCH
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Typy referencyjne a typy bezpośrednie
- Parametry przekazywane przez wartość
- 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)
- 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
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Przechwytywanie błędów
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Dziedziczenie klas wyjątków
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Ogólny blok catch
- 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()
- Podsumowanie
- 6. Klasy
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Programowanie obiektowe
- Hermetyzacja
- Dziedziczenie
- Polimorfizm
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Deklarowanie klasy i tworzenie jej instancji
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Czym są obiekty, a czym klasy?
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Hermetyzacja, część 1. Obiekty łączą dane z metodami
- 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
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Zapisywanie i wczytywanie plików
- 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
- Deklarowanie konstruktora
- Konstruktory domyślne
- Inicjatory obiektów
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Inicjatory kolekcji
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Finalizatory
- 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
- 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
- Pola statyczne
- Metody statyczne
- Konstruktory statyczne
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Preferuj statyczną inicjację w deklaracji
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Właściwości statyczne
- Klasy statyczne
- Metody rozszerzające
- Hermetyzacja danych
- Modyfikator const
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Stałe publiczne powinny być niezmiennymi wartościami
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Modyfikator const
- Modyfikator readonly
- Klasy zagnieżdżone
- Klasy częściowe
- Definiowanie klasy częściowej
- Metody częściowe
- Podsumowanie
- Dziedziczenie
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Definicje z obszaru dziedziczenia
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Tworzenie klas pochodnych
- Rzutowanie między typami bazowymi i pochodnymi
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Rzutowanie w łańcuchu dziedziczenia
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Definiowanie niestandardowych konwersji
- Rzutowanie między typami bazowymi i pochodnymi
- Modyfikator dostępu private
- Modyfikator dostępu protected
- Metody rozszerzające
- Dziedziczenie po jednym typie
- Klasy zamknięte
- 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
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Polimorfizm
- 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
- 8. Interfejsy
- Wprowadzenie do interfejsów
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Po co stosować interfejsy?
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Wprowadzenie do interfejsów
- 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
- 9. Typy bezpośrednie
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Kategorie typów
- Typy bezpośrednie
- Typy referencyjne
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Struktury
- Inicjowanie struktur
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Używanie operatora new do typów bezpośrednich
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Inicjowanie struktur
- Używanie operatora default
- Dziedziczenie i interfejsy a typy bezpośrednie
- Opakowywanie
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Typy bezpośrednie w instrukcji lock
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Jak uniknąć opakowywania w wywołaniach metod?
- 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
- 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
- Przesłanianie składowych z klasy object
- 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
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- 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
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Modyfikator protected internal dla składowych w typach
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Modyfikatory dostępu dla składowych w typach
- 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
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Słabe referencje
- 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
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Ponowne tworzenie usuwanych obiektów
- Leniwe inicjowanie
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Leniwe inicjowanie za pomocą typów generycznych i wyrażeń lambda
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Podsumowanie
- 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
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wewnętrzne mechanizmy pustego bloku catch
- 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
- Język C# bez typów generycznych
- 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
- 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
- Podsumowanie
- 13. Delegaty i wyrażenia lambda
- Wprowadzenie do delegatów
- Opis scenariusza
- Typ danych w postaci delegata
- Wprowadzenie do delegatów
- 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
- Typy delegatów do ogólnego użytku System.Func i System.Action
- Tworzenie instancji delegata
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Tworzenie instancji delegatów w wersji C# 1.0
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wewnętrzne mechanizmy delegatów
- Wyrażenia lambda
- Lambdy w postaci instrukcji
- Lambdy w postaci wyrażeń
- Metody anonimowe
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Bezparametrowe metody anonimowe
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- 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
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Przypadkowe przechwytywanie zmiennych z pętli
- 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ń
- Podsumowanie
- 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
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wywoływanie delegata z zachowaniem bezpieczeństwa ze względu na wątki
- Implementacja wzorca publikuj-subskrybuj za pomocą delegatów typu multicast
- 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
- Po co stosować zdarzenia?
- Deklarowanie zdarzeń
- Konwencje programistyczne
- Typy generyczne a delegaty
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wewnętrzne mechanizmy zdarzeń
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Modyfikowanie implementacji zdarzeń
- Podsumowanie
- 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
- Typy anonimowe
- 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
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Inicjatory kolekcji a 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 POCZĄTKUJĄCYCH
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Implementacja opóźnionego wykonywania
- Projekcja
- Wprowadzenie do wyrażeń z kwerendami
- 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
- Wyrażenia z kwerendą to tylko wywołania metod
- Podsumowanie
- 17. Tworzenie niestandardowych kolekcji
- Inne interfejsy implementowane w kolekcjach
- Porównanie interfejsów IList<T> i IDictionary<TKey, TValue>
- Interfejs ICollection<T>
- Inne interfejsy implementowane w kolekcjach
- Podstawowe klasy kolekcji
- Kolekcje w postaci list List<T>
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Modyfikowanie procesu sortowania kolekcji
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Kolekcje w postaci list List<T>
- 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 ZAAWANSOWANYCH
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Wymogi związane ze sprawdzaniem równości
- 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>
- Udostępnianie indeksera
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Określanie nazwy indeksera za pomocą atrybutu IndexerName
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Definiowanie operatora indeksowania przyjmującego różną liczbę parametrów
- Zwracanie wartości null lub pustej kolekcji
- Iteratory
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Początki iteratorów
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- 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 ZAAWANSOWANYCH
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Struktury a klasy
- Anulowanie dalszych iteracji za pomocą instrukcji yield break
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Jak działają iteratory
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Kontekstowe słowa kluczowe
- Tworzenie wielu identyfikatorów w jednej klasie
- Wymagania związane z instrukcją yield
- Podsumowanie
- 18. Refleksja, atrybuty i programowanie dynamiczne
- Mechanizm refleksji
- Dostęp do metadanych za pomocą obiektu typu System.Type
- Metoda GetType()
- Operator typeof()
- Dostęp do metadanych za pomocą obiektu typu System.Type
- 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
- Mechanizm refleksji
- 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
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- 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
- 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
- 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
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Co, jak i dlaczego w dziedzinie wielowątkowości
- Podstawy 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
- 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
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Oczekiwanie na wartości inne niż obiekt typu Task<T>
- 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 ZAAWANSOWANYCH
- 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
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Wychodzenie z pętli równoległej
- Równoległe wykonywanie kwerend LINQ
- Anulowanie kwerendy PLINQ
- Podsumowanie
- 20. Synchronizowanie wątków
- Po co stosować synchronizację?
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- Wiele wątków i zmienne lokalne
- ZAGADNIENIE DLA POCZĄTKUJĄCYCH
- 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
- Po co stosować synchronizację?
- 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
- Zegary
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Kontrolowanie modelu wątkowego w technologii COM za pomocą atrybutu STAThreadAttribute
- ZAGADNIENIE DLA ZAAWANSOWANYCH
- Podsumowanie
- 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
- Mechanizm P/Invoke
- 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
- 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
Helion - inne książki
-
Oto drugie wydanie książki, którą specjaliści CISO uznali za przełomową. Dowiesz się z niej, jak kwantyfikować niepewność i jak za pomocą prostych metod i narzędzi poprawić ocenę ryzyka w nowoczesnych organizacjach. Znalazły się tu nowe techniki modelowania, pomiaru i szacowania, a także mnóstwo ...(60.90 zł najniższa cena z 30 dni)
52.20 zł
87.00 zł(-40%) -
W tej książce omówiono wewnętrzny sposób działania frameworka Kubernetes i pokazano, jak za jego pomocą budować wydajne, niezawodne i odporne na awarie aplikacje natywnej chmury. Dowiesz się, jak kontenery używają przestrzeni nazw w celu izolowania procesów, a także jak korzystają z funkcjonalnoś...(62.30 zł najniższa cena z 30 dni)
53.40 zł
89.00 zł(-40%) -
Jeśli zastanawiasz się nad przekwalifikowaniem i karierą w branży informatycznej albo chcesz poszerzyć swoje umiejętności o programowanie, ale wydaje Ci się ono czarną magią, zapewniamy - w programowaniu nie ma nic z magii. To proces polegający na tworzeniu zbioru instrukcji, dzięki którym komput...(27.93 zł najniższa cena z 30 dni)
23.94 zł
39.90 zł(-40%) -
Ta zwięzła publikacja przyda się profesjonalistom, którzy lubią drobne ulepszenia prowadzące do dużych korzyści. Zrozumiale wyjaśniono w niej, na czym polega proces tworzenia czystego i niezawodnego kodu. W rozsądnej dawce podano zagadnienia teoretyczne, takie jak sprzężenie, kohezja, zdyskontowa...(34.93 zł najniższa cena z 30 dni)
29.94 zł
49.90 zł(-40%) -
Komputery firmy Apple to swojego rodzaju legenda - dla niektórych wybór oczywisty i właściwie jedyny, dla innych zwykła moda nakręcająca popularność, dla części tajemnica. Czy warto ją poznać i przesiąść się z komputera pracującego pod Windowsem lub Linuksem na Macintosha z macOS? Warto, warto, p...(53.40 zł najniższa cena z 30 dni)
53.40 zł
89.00 zł(-40%) -
Dzięki tej książce dowiesz się, jak pozyskiwać, analizować i wizualizować dane, a potem używać ich do rozwiązywania problemów biznesowych. Wystarczy, że znasz podstawy Pythona i matematyki na poziomie liceum, aby zacząć stosować naukę o danych w codziennej pracy. Znajdziesz tu szereg praktycznych...(41.40 zł najniższa cena z 30 dni)
41.40 zł
69.00 zł(-40%) -
Dzięki tej świetnie napisanej, miejscami przezabawnej książce dowiesz się, na czym naprawdę polega testowanie granic bezpieczeństwa fizycznego. To fascynująca relacja o sposobach wynajdywania niedoskonałości zabezpieczeń, stosowania socjotechnik i wykorzystywania słabych stron ludzkiej natury. Wy...(35.40 zł najniższa cena z 30 dni)
35.40 zł
59.00 zł(-40%) -
Książka Java. Teoria w praktyce została pomyślana tak, by krok po kroku przybliżać specyfikę tego języka programowania. Zaczniesz od podstaw - poznasz między innymi główne założenia, zgodnie z którymi działa Java: maszynę wirtualną, zmienne, operatory, instrukcje sterujące i tablice - by następni...(65.40 zł najniższa cena z 30 dni)
65.40 zł
109.00 zł(-40%) -
Ta książka zawiera szereg praktycznych wskazówek dotyczących przygotowania, przeprowadzania i oceniania wyników kontrolowanych eksperymentów online. Dzięki niej nauczysz się stosować naukowe podejście do formułowania założeń i oceny hipotez w testach A/B, dowiesz się także, jak sprawdzać wiarygod...(47.40 zł najniższa cena z 30 dni)
47.40 zł
79.00 zł(-40%) -
Współpraca z ChatGPT wymaga pewnego przygotowania. Niewątpliwą zaletą tej technologii jest to, że można się z nią porozumieć za pomocą języka naturalnego ― takiego, jakim komunikujemy się ze sobą na co dzień. Rzecz w tym, by nauczyć się w odpowiedni sposób zadawać pytania i wydawać poleceni...(29.94 zł najniższa cena z 30 dni)
29.94 zł
49.90 zł(-40%)
Dzieki opcji "Druk na żądanie" do sprzedaży wracają tytuły Grupy Helion, które cieszyły sie dużym zainteresowaniem, a których nakład został wyprzedany.
Dla naszych Czytelników wydrukowaliśmy dodatkową pulę egzemplarzy w technice druku cyfrowego.
Co powinieneś wiedzieć o usłudze "Druk na żądanie":
- usługa obejmuje tylko widoczną poniżej listę tytułów, którą na bieżąco aktualizujemy;
- cena książki może być wyższa od początkowej ceny detalicznej, co jest spowodowane kosztami druku cyfrowego (wyższymi niż koszty tradycyjnego druku offsetowego). Obowiązująca cena jest zawsze podawana na stronie WWW książki;
- zawartość książki wraz z dodatkami (płyta CD, DVD) odpowiada jej pierwotnemu wydaniu i jest w pełni komplementarna;
- usługa nie obejmuje książek w kolorze.
Masz pytanie o konkretny tytuł? Napisz do nas: sklep[at]helion.pl.
Książka, którą chcesz zamówić pochodzi z końcówki nakładu. Oznacza to, że mogą się pojawić drobne defekty (otarcia, rysy, zagięcia).
Co powinieneś wiedzieć o usłudze "Końcówka nakładu":
- usługa obejmuje tylko książki oznaczone tagiem "Końcówka nakładu";
- wady o których mowa powyżej nie podlegają reklamacji;
Masz pytanie o konkretny tytuł? Napisz do nas: sklep[at]helion.pl.
Książka drukowana
![Loader](https://static01.helion.com.pl/ebookpoint/img/ajax-loader.gif)
Zamknij
Przeczytaj darmowy fragment
![ajax-loader](https://static01.helion.com.pl/ebookpoint/img/ajax-loader.gif)
Oceny i opinie klientów: C# 7.0. Kompletny przewodnik dla praktyków. Wydanie VI Mark Michaelis (6)
Weryfikacja opinii następuję na podstawie historii zamówień na koncie Użytkownika umieszczającego opinię. Użytkownik mógł otrzymać punkty za opublikowanie opinii uprawniające do uzyskania rabatu w ramach Programu Punktowego.
(4)
(1)
(1)
(0)
(0)
(0)
Oceny i opinie poprzednich wydań
więcej opinii