C# jest prostym, nowoczesnym, bezpiecznym językiem programowania, który powstał na bazie języków C i C++, jednak otrzymał też najlepsze cechy takich języków jak Visual Basic, Object Pascal, Delphi czy Java. Został od podstaw zaprojektowany jako obiektowy. C# stanowi część platformy Microsoft .NET Framework. Ta dojrzała technologia pozwala na efektywne tworzenie kodu bezpiecznego, przejrzystego, wydajnego i prostego w konserwacji.
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 znające C# będą mogły zapoznać się ze skomplikowanymi paradygmatami programowania, a także przejrzeć szczegółowe omówienie funkcji wprowadzonych w najnowszej wersji języka, C# 6.0, oraz w platformie .NET Framework 4.6. Ponadto każdy, kto pracuje w C#, znajdzie tu doskonale zorganizowane źródło wiedzy o tym potężnym języku.
W tej książce przedstawiono:
kompletne omówienie elementów języka C#,
jasne wskazówki dotyczące implementowania niezawodnej obsługi błędów,
metody zmniejszania złożoności kodu,
zasady programowania dynamicznego z wykorzystaniem refleksji i atrybutów,
wykorzystywanie możliwości platformy .NET, w tym omówienie kolekcji i standardu CLI,
powiązania kodu C# z wykorzystywanym środowiskiem uruchomieniowym.
Sprawdź, jak wygodnym i niezawodnym językiem jest C#!
Mark Michaelis jest założycielem firmy IntelliTect. Laureat nagrody Microsoft MVP, dyrektor regionalny Microsoftu. Prowadzi prelekcje na konferencjach dla programistów i jest autorem wielu książek.
Eric Lippert jest programistą w zespole odpowiedzialnym za analizę języka C# w firmie Coverity/Synopsys. Wcześniej był głównym programistą w zespole pracującym nad kompilatorem języka C# w Microsofcie i członkiem zespołu projektującego ten język. Brał też udział w projektowaniu i implementowaniu wielu innych technologii w Microsofcie.
Author(s): Mark Michaelis, Eric Lippert
Edition: 5
Publisher: Helion
Year: 2016
Language: Polish
Pages: 0
Tags: informatyka;programowanie;c#
Spis rysunków (11)
Spis tabel (13)
Przedmowa (15)
Wprowadzenie (17)
Podziękowania (27)
O autorach (29)
1. Wprowadzenie do języka C# (31)
Witaj, świecie (32)
Podstawy składni języka C# (33)
Dane wejściowe i wyjściowe w konsoli (44)
2. Typy danych (59)
Podstawowe typy liczbowe (59)
Inne podstawowe typy (67)
Wartości null i void (78)
Kategorie typów (81)
Modyfikator umożliwiający stosowanie wartości null (83)
Konwersje typów danych (84)
Tablice (89)
3. Operatory i przepływ sterowania (105)
Operatory (106)
Zarządzanie przepływem sterowania (119)
Bloki kodu ({}) (124)
Bloki kodu, zasięgi i przestrzenie deklaracji (126)
Wyrażenia logiczne (127)
Operatory bitowe (<<, >>, |, &, ^, ~) (135)
Instrukcje związane z przepływem sterowania - ciąg dalszy (140)
Instrukcje skoku (150)
Dyrektywy preprocesora języka C# (156)
4. Metody i parametry (165)
Wywoływanie metody (166)
Deklarowanie metody (172)
Dyrektywa using (176)
Zwracane wartości i parametry metody Main() (181)
Zaawansowane parametry metod (183)
Rekurencja (190)
Przeciążanie metod (193)
Parametry opcjonalne (195)
Podstawowa obsługa błędów z wykorzystaniem wyjątków (199)
5. Klasy (213)
Deklarowanie klasy i tworzenie jej instancji (216)
Pola instancji (218)
Metody instancji (221)
Stosowanie słowa kluczowego this (222)
Modyfikatory dostępu (228)
Właściwości (230)
Konstruktory (244)
Składowe statyczne (253)
Metody rozszerzające (262)
Hermetyzacja danych (263)
Klasy zagnieżdżone (266)
Klasy częściowe (268)
6. Dziedziczenie (273)
Tworzenie klas pochodnych (274)
Przesłanianie składowych z klas bazowych (284)
Klasy abstrakcyjne (294)
Wszystkie klasy są pochodne od System.Object (299)
Sprawdzanie typu za pomocą operatora is (301)
Konwersja z wykorzystaniem operatora as (301)
7. Interfejsy (303)
Wprowadzenie do interfejsów (304)
Polimorfizm oparty na interfejsach (305)
Implementacja interfejsu (309)
Przekształcanie między klasą z implementacją i interfejsami (314)
Dziedziczenie interfejsów (315)
Dziedziczenie po wielu interfejsach (317)
Metody rozszerzające i interfejsy (317)
Implementowanie wielodziedziczenia za pomocą interfejsów (319)
Zarządzanie wersjami (321)
Interfejsy a klasy (323)
Interfejsy a atrybuty (324)
8. Typy bezpośrednie (327)
Struktury (331)
Opakowywanie (336)
Wyliczenia (343)
9. Dobrze uformowane typy (355)
Przesłanianie składowych z klasy object (355)
Przeciążanie operatorów (365)
Wskazywanie innych podzespołów (373)
Definiowanie przestrzeni nazw (377)
Komentarze XML-owe (381)
Odzyskiwanie pamięci (385)
Porządkowanie zasobów (387)
Leniwe inicjowanie (394)
10. Obsługa wyjątków (397)
Wiele typów wyjątków (397)
Przechwytywanie wyjątków (400)
Ogólny blok catch (403)
Wskazówki związane z obsługą wyjątków (405)
Definiowanie niestandardowych wyjątków (407)
Ponowne zgłaszanie opakowanego wyjątku (411)
11. Typy generyczne (415)
Język C# bez typów generycznych (416)
Wprowadzenie do typów generycznych (420)
Ograniczenia (430)
Metody generyczne (442)
Kowariancja i kontrawariancja (446)
Wewnętrzne mechanizmy typów generycznych (452)
12. Delegaty i wyrażenia lambda (457)
Wprowadzenie do delegatów (458)
Wyrażenia lambda (466)
Metody anonimowe (471)
Delegaty ogólnego przeznaczenia - System.Func i System.Action (473)
13. Zdarzenia (489)
Implementacja wzorca "obserwator" za pomocą delegatów typu multicast (490)
Zdarzenia (503)
14. Interfejsy kolekcji ze standardowymi operatorami kwerend (513)
Typy anonimowe i zmienne lokalne o niejawnie określanym typie (514)
Inicjatory kolekcji (519)
Interfejs IEnumerable sprawia, że klasa staje się kolekcją (522)
Standardowe operatory kwerend (527)
15. Technologia LINQ i wyrażenia z kwerendami (557)
Wprowadzenie do wyrażeń z kwerendami (558)
Wyrażenia z kwerendą to tylko wywołania metod (573)
16. Tworzenie niestandardowych kolekcji (577)
Inne interfejsy implementowane w kolekcjach (578)
Podstawowe klasy kolekcji (580)
Udostępnianie indeksera (594)
Zwracanie wartości null lub pustej kolekcji (598)
Iteratory (598)
17. Refleksja, atrybuty i programowanie dynamiczne (613)
Mechanizm refleksji (614)
Operator nameof (623)
Atrybuty (624)
Programowanie z wykorzystaniem obiektów dynamicznych (644)
18. Wielowątkowość (655)
Podstawy wielowątkowości (657)
Używanie klasy System.Threading (663)
Zadania asynchroniczne (670)
Anulowanie zadania (686)
Wzorzec obsługi asynchroniczności za pomocą zadań (692)
Równoległe wykonywanie iteracji pętli (713)
Równoległe wykonywanie kwerend LINQ (721)
19. Synchronizowanie wątków (727)
Po co stosować synchronizację? (728)
Zegary (752)
20. Współdziałanie między platformami i niezabezpieczony kod (755)
Mechanizm P/Invoke (756)
Wskaźniki i adresy (766)
Wykonywanie niezabezpieczonego kodu za pomocą delegata (775)
Używanie bibliotek Windows Runtime w języku C# (776)
21. Standard CLI (781)
Definiowanie standardu CLI (782)
Implementacje standardu CLI (783)
Kompilacja kodu w języku C# na kod maszynowy (784)
Środowisko uruchomieniowe (786)
Domeny aplikacji (790)
Podzespoły, manifesty i moduły (790)
Język Common Intermediate Language (792)
Common Type System (793)
Common Language Specification (794)
Base Class Library (794)
Metadane (794)
A. Pobieranie i instalowanie kompilatora języka C# oraz platformy CLI (799)
Platforma .NET dla systemu Windows (799)
Platforma .NET w systemach OS X i Linux (801)
B. Kod źródłowy programu do gry w kółko i krzyżyk (803)
C. Wielowątkowość bez biblioteki TPL i przed wersją C# 6.0 (809)
Wzorzec APM (810)
Asynchroniczne wywoływanie delegatów (821)
Wzorzec EAP - asynchroniczność oparta na zdarzeniach (824)
Wzorzec wykorzystujący roboczy wątek działający w tle (827)
Kierowanie wywołań do interfejsu użytkownika w systemie Windows (830)
D. Zegary przed wprowadzeniem w wersji C# 5.0 słów kluczowych async i await (835)
Skorowidz (841)