C# 8.0. Programowanie Tworzenie aplikacji Windows, internetowych oraz biurowych Łaziska Górne

Język C# wciąż cechuje prostota, przy czym jego możliwości rosną z każdą wersją. Od początku jest rozwijany z konsekwencją, a każda nowa funkcjonalność idealnie integruje się z resztą języka. W efekcie C# jest dojrzały, nowoczesny, wszechstronny i bezpieczny. Stanowi integralną część platformy …

od 149 Najbliżej: 24 km

Liczba ofert: 1

Oferta sklepu

Opis

Język C# wciąż cechuje prostota, przy czym jego możliwości rosną z każdą wersją. Od początku jest rozwijany z konsekwencją, a każda nowa funkcjonalność idealnie integruje się z resztą języka. W efekcie C# jest dojrzały, nowoczesny, wszechstronny i bezpieczny. Stanowi integralną część platformy Microsoft .NET Framework. Profesjonalni programiści, którzy dbają o wysoką jakość tworzonego kodu, uważają C# i .NET za swoje ulubione narzędzie pracy. Wersja 8.0 tego języka sprawia, że programowanie staje się jeszcze bardziej efektywne i satysfakcjonujące. Pełne wykorzystanie tych imponujących możliwości wymaga jednak mistrzowskiego opanowania subtelności poszczególnych narzędzi i niuansów samego języka. Ta książka została napisana z myślą o doświadczonych programistach. Podstawowe zagadnienia, takie jak klasy, polimorfizm i kolekcje, znalazły się w kilku pierwszych rozdziałach, jednak zrozumienie treści całej publikacji wymaga umiejętności technicznych. Została poświęcona ważnym koncepcjom C# i tajnikom tego języka, które rzadko kiedy są opisywane w literaturze. Dokładnie omówiono tu typy ogólne, LINQ oraz techniki programowania asynchronicznego. Przedstawiono najnowsze możliwości platformy .NET Core i języka C# 8.0, takie jak strumienie asynchroniczne, referencje akceptujące wartości puste, dopasowywanie wzorców, domyślne implementacje interfejsów, zakresy, a także nową składnię indeksowania oraz zmiany w narzędziach platformy .NET. Liczne rozbudowane przykłady stanowią świetne uzupełnienie prezentowanych treści. W tej książce między innymi: możliwości języka C#: klasy, typy niestandardowe, kolekcje, obsługa błędów optymalizacja kodu pod kątem wykorzystania pamięci praca na strumieniach danych za pomocą technologii LINQ platforma .NET i programowanie wielowątkowe programowanie asynchroniczne a skalowalność aplikacji Dla profesjonalistów najlepszy jest C#! Spis treści: Wstęp 15 1. Prezentacja C# 19 Dlaczego C#? 20 Najważniejsze cechy C# 21 Kod zarządzany i CLR 22 Ogólność jest preferowana względem specjalizacji 24 Standardy oraz implementacje języka C# 25 Kilka .NET-ów (chwilowo) 26 Użycie .NET Standard w celu tworzenia projektów działających w różnych wersjach .NET 28 Visual Studio oraz Visual Studio Code 30 Anatomia prostego programu 33 Dodawanie projektu do istniejącego rozwiązania 36 Odwołania do innych projektów 37 Odwołania do bibliotek zewnętrznych 37 Pisanie testu jednostkowego 40 Przestrzenie nazw 43 Klasy 47 Punkt wejścia do programu 48 Testy jednostkowe 49 Podsumowanie 50 2. Podstawy stosowania języka C# 51 Zmienne lokalne 52 Zakres 57 Instrukcje i wyrażenia 61 Instrukcje 61 Wyrażenia 63 Komentarze i białe znaki 68 Dyrektywy preprocesora 70 Symbole kompilacji 70 Dyrektywy #error oraz #warning 72 Dyrektywa #line 72 Dyrektywa #pragma 73 Dyrektywa #nullable 74 Dyrektywy #region i #endregion 74 Podstawowe typy danych 75 Typy liczbowe 75 Wartości logiczne 86 Znaki i łańcuchy znaków 86 Krotki 92 Dynamic 95 Object 96 Operatory 96 Sterowanie przepływem 102 Decyzje logiczne przy użyciu instrukcji if 102 Wielokrotny wybór przy użyciu instrukcji switch 104 Pętle: while oraz do 106 Pętle znane z języka C 107 Przeglądanie kolekcji przy użyciu pętli foreach 109 Wzorce 110 Uzyskiwanie większej dokładności dzięki użyciu when 114 Wzorce w wyrażeniach 115 Podsumowanie 117 3. Typy 119 Klasy 119 Składowe statyczne 123 Klasy statyczne 124 Typy referencyjne 125 Struktury 136 Kiedy tworzyć typy wartościowe? 140 Gwarantowanie niezmienności 145 Składowe 147 Pola 147 Konstruktory 149 Dekonstruktory 159 Metody 160 Właściwości 177 Indeksatory 183 Składnia inicjalizatorów 185 Operatory 186 Zdarzenia 189 Typy zagnieżdżone 189 Interfejsy 190 Domyślne implementacje metod w interfejsach 192 Typy wyliczeniowe 194 Inne typy 197 Typy anonimowe 198 Typy i metody częściowe 200 Podsumowanie 202 4. Typy ogólne 203 Typy ogólne 204 Ograniczenia 206 Ograniczenia typu 207 Ograniczenia typu referencyjnego 209 Ograniczenia typu wartościowego 212 Wszystkie typy w hierarchii wartościowe dzięki ograniczeniu unmanaged 212 Ograniczenie notnull 213 Inne specjalne ograniczenia typów 213 Stosowanie wielu ograniczeń 213 Wartości przypominające zero 214 Metody ogólne 215 Wnioskowanie typu 216 Typy ogólne i krotki 217 Tajniki typów ogólnych 218 Podsumowanie 220 5. Kolekcje 221 Tablice 221 Inicjalizacja tablic 224 Przeszukiwanie i sortowanie 226 Tablice wielowymiarowe 233 Kopiowanie i zmiana wielkości 236 List 237 Interfejsy list i sekwencji 240 Implementacja list i sekwencji 246 Implementacja IEnumerable przy użyciu iteratorów 246 Klasa Collection 251 Klasa ReadOnlyCollection 252 Odwołania do elementów z użyciem indeksów i zakresów 253 System.Index 253 System.Range 256 Obsługa indeksów i zakresów we własnych typach danych 258 Słowniki 260 Słowniki posortowane 263 Zbiory 265 Kolejki i stosy 266 Listy połączone 267 Kolekcje współbieżne 268 Kolekcje niezmienne 269 Klasa ImutableArray 271 Podsumowanie 272 6. Dziedziczenie 273 Dziedziczenie i konwersje 274 Dziedziczenie interfejsów 278 Typy ogólne 279 Kowariancja i kontrawariancja 280 System.Object 285 Wszechobecne metody typu System.Object 285 Dostępność i dziedziczenie 287 Metody wirtualne 288 Metody abstrakcyjne 290 Dziedziczenie i wersje bibliotek 291 Metody i klasy ostateczne 297 Dostęp do składowych klas bazowych 299 Dziedziczenie i tworzenie obiektów 299 Specjalne typy bazowe 303 Podsumowanie 305 7. Cykl życia obiektów 307 Mechanizm odzyskiwania pamięci 308 Określanie osiągalności danych 310 Przypadkowe problemy mechanizmu odzyskiwania pamięci 312 Słabe referencje 315 Odzyskiwanie pamięci 318 Tryby odzyskiwania pamięci 324 Tymczasowe zawieszanie odzyskiwania pamięci 328 Przypadkowe utrudnianie scalania 329 Wymuszanie odzyskiwania pamięci 332 Destruktory i finalizacja 333 Interfejs IDisposable 337 Zwalnianie opcjonalne 343 Pakowanie 344 Pakowanie danych typu Nullable 349 Podsumowanie 350 8. Wyjątki 351 Źródła wyjątków 353 Wyjątki zgłaszane przez API 354 Błędy wykrywane przez środowisko uruchomieniowe 356 Obsługa wyjątków 357 Obiekty wyjątków 358 Wiele bloków catch 360 Filtry wyjątków 361 Zagnieżdżone bloki try 362 Bloki finally 364 Zgłaszanie wyjątków 365 Powtórne zgłaszanie wyjątków 366 Sposób na szybkie zakończenie aplikacji 370 Typy wyjątków 370 Wyjątki niestandardowe 373 Wyjątki nieobsługiwane 375 Podsumowanie 377 9. Delegaty, wyrażenia lambda i zdarzenia 379 Typy delegatów 380 Tworzenie delegatów 381 MulticastDelegate - delegaty zbiorowe 384 Wywoływanie delegatów 386 Popularne typy delegatów 388 Zgodność typów 390 Więcej niż składnia 393 Funkcje anonimowe 395 Przechwytywane zmienne 398 Wyrażenia lambda oraz drzewa wyrażeń 405 Zdarzenia 407 Standardowy wzorzec delegatów zdarzeń 409 Niestandardowe metody dodające i usuwające zdarzenia 410 Zdarzenia i mechanizm odzyskiwania pamięci 413 Zdarzenia a delegaty 415 Delegaty a interfejsy 416 Podsumowanie 416 10. LINQ 419 Wyrażenia zapytań 420 Jak są rozwijane wyrażenia zapytań 423 Obsługa wyrażeń zapytań 425 Przetwarzanie opóźnione 429 LINQ, typy ogólne oraz interfejs IQueryable 432 Standardowe operatory LINQ 434 Filtrowanie 436 Selekcja 438 Operator SelectMany 441 Określanie porządku 444 Testy zawierania 446 Konkretne elementy i podzakresy 448 Agregacja 452 Operacje na zbiorach 457 Operatory działające na całych sekwencjach z zachowaniem kolejności 458 Grupowanie 459 Złączenia 464 Konwersje 467 Generowanie sekwencji 471 Inne implementacje LINQ 472 Entity Framework 472 Parallel LINQ (PLINQ) 473 LINQ to XML 473 Reactive Extensions 473 Tx (LINQ to Logs and Traces) 473 Podsumowanie 474 11. Reactive Extensions 475 Podstawowe interfejsy 477 Interfejs IObserver 478 Interfejs IObservable 479 Publikowanie i subskrypcja z wykorzystaniem delegatów 486 Tworzenie źródła przy wykorzystaniu delegatów 486 Subskrybowanie obserwowalnych źródeł przy użyciu delegatów 489 Generator sekwencji 491 Empty 491 Never 491 Return 492 Throw 492 Range 492 Repeat 492 Generate 492 Zapytania LINQ 493 Operatory grupowania 496 Operatory Join 497 Operator SelectMany 503 Agregacja oraz inne operatory zwracające jedną wartość 503 Operator Concat 504 Operatory biblioteki Rx 505 Merge 505 Operatory Buffer i Window 507 Operator Scan 514 Operator Amb 515 DistinctUntilChanged 516 Mechanizmy szeregujące 516 Określanie mechanizmów szeregujących 517 Wbudowane mechanizmy szeregujące 519 Tematy 520 Subject 521 BehaviorSubject 522 ReplaySubject 523 AsyncSubject 523 Dostosowanie 524 IEnumerableoraz IAsyncEnumerable 524 Zdarzenia .NET 526 API asynchroniczne 528 Operacje z uzależnieniami czasowymi 530 Interval 530 Timer 531 Timestamp 532 TimeInterval 533 Throttle 533 Sample 534 Timeout 534 Operatory okien czasowych 534 Delay 535 DelaySubscription 536 Podsumowanie 536 12. Podzespoły 537 Anatomia podzespołu 538 Metadane .NET 539 Zasoby 539 Podzespoły składające się z wielu plików 539 Inne możliwości formatu PE 540 Tożsamość typu 542 Wczytywanie podzespołów 545 Określanie podzespołów 546 Jawne wczytywanie podzespołów 550 Izolacja i obsługa wtyczek z użyciem typu AssemblyLoadContext 551 Nazwy podzespołów 553 Silne nazwy 553 Numer wersji 556 Identyfikator kulturowy 559 Zabezpieczenia 563 Podsumowanie 563 13. Odzwierciedlanie 565 Typy odzwierciedlania 566 Assembly 567 Module 570 MemberInfo 572 Type oraz TypeInfo 574 MethodBase, ConstructorInfo oraz MethodInfo 580 ParameterInfo 581 FieldInfo 581 PropertyInfo 582 EventInfo 582 Konteksty odzwierciedlania 583 Podsumowanie 585 14. Atrybuty 587 Stosowanie atrybutów 587 Cele atrybutów 589 Atrybuty obsługiwane przez kompilator 591 Atrybuty obsługiwane przez CLR 596 Definiowanie i stosowanie atrybutów niestandardowych 603 Typ atrybutu 604 Pobieranie atrybutów 606 Podsumowanie 609 15. Pliki i strumienie 611 Klasa Stream 612 Położenie i poruszanie się w strumieniu 614 Opróżnianie strumienia 615 Kopiowanie 616 Length 616 Zwalnianie strumieni 617 Operacje asynchroniczne 618 Konkretne typy strumieni 619 Jeden typ, wiele zachowań 620 Typy operujące na tekstach 622 TextReader oraz TextWriter 622 Konkretne typy do odczytu i zapisu łańcuchów znaków 624 Kodowanie 627 Pliki i katalogi 631 Klasa FileStream 631 Klasa File 634 Klasa Directory 638 Klasa Path 639 Klasy FileInfo, DirectoryInfo oraz FileSystemInfo 641 Znane katalogi 642 Serializacja 643 Klasy BinaryReader oraz BinaryWriter 644 Serializacja CLR 645 JSON.NET 647 Podsumowanie 652 16. Wielowątkowość 653 Wątki 653 Wątki, zmienne i wspólny stan 655 Klasa Thread 661 Pula wątków 663 Powinowactwo do wątku oraz klasa SynchronizationContext 666 Synchronizacja 670 Monitory oraz słowo kluczowe lock 671 Klasa SpinLock 677 Blokady odczytu i zapisu 680 Obiekty zdarzeń 681 Klasa Barrier 684 Klasa CountdownEvent 685 Semafory 685 Muteksy 686 Klasa Interlocked 686 Leniwa inicjalizacja 689 Pozostałe klasy obsługujące działania współbieżne 691 Zadania 693 Klasy Task oraz Task 693 Kontynuacje 699 Mechanizmy szeregujące 701 Obsługa błędów 703 Niestandardowe zadania bezwątkowe 703 Związki zadanie nadrzędne - zadanie podrzędne 705 Zadania złożone 705 Inne wzorce asynchroniczne 706 Anulowanie 707 Równoległość 708 Klasa Parallel 708 Parallel LINQ 709 TPL Dataflow 710 Podsumowanie 710 17. Asynchroniczne cechy języka 711 Nowe słowa kluczowe: async oraz await 712 Konteksty wykonania i synchronizacji 716 Wykonywanie wielu operacji i pętli 718 Zwracanie obiektu Task 724 Stosowanie async w metodach zagnieżdżonych 726 Wzorzec słowa kluczowego await 726 Obsługa błędów 731 Weryfikacja poprawności argumentów 733 Wyjątki pojedyncze oraz grupy wyjątków 735 Operacje równoległe i nieobsłużone wyjątki 736 Podsumowanie 738 18. Wydajne użytkowanie pamięci 739 (Nie) kopiować! 740 Reprezentacja elementów sekwencyjnych przy użyciu Span 744 Metody pomocnicze 747 Tylko na stosie 747 Reprezentacja elementów sekwencyjnych przy użyciu Memory 748 ReadOnlySequence 748 Przetwarzanie strumieni danych przy użyciu potoków 749 Przetwarzanie danych JSON w ASP.NET Core 751 Podsumowanie 757 O autorze: Ian Griffiths - jest autorem kursu WPF oraz instruktorem w firmie Pluralsight, specjalizującej się w prowadzeniu kursów Microsoft .NET. Pracuje także jako niezależny konsultant. Jest współautorem książek Windows Forms in a Nutshell, Mastering Visual Studio .NET oraz Programming WPF, wydanych przez wydawnictwo O"Reilly.

Specyfikacja

Podstawowe informacje

Autor
  • Griffiths Ian
Wybrane wydawnictwa
  • Helion
Okładka
  • Miękka
Rok wydania
  • 2020
Ilość stron
  • 758
Tematyka
  • Programowanie
ISBN
  • 9788328367395
Model
  • miękka