O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

C# 5.0. Programowanie. Tworzenie aplikacji Windows 8, internetowych oraz biurowych w .NET 4.5 Framework

Book Description

Ten rewelacyjny podręcznik jest Twoim kluczem do poznania wszystkich niuansów języka C# 5.0. Kolejne wydanie zostało zaktualizowane o wszystkie nowości w C#. Znajdziesz tu kompletny opis języka i platformy .NET. W trakcie lektury oprócz standardowych zagadnień będziesz mógł sprawdzić, jak tworzyć aplikacje dla systemu Windows 8 i interfejsu Metro. Ponadto błyskawicznie opanujesz detale związane z programowaniem obiektowym, dynamicznym i statycznym określaniem typów oraz językiem XAML. Książka ta jest uznanym kompendium wiedzy na temat języka C#.

Table of Contents

  1. Dedication
  2. Wstęp
    1. Do kogo jest skierowana ta książka
    2. Stosowane konwencje
    3. Korzystanie z przykładów do książki
    4. Podziękowania
  3. 1. Prezentacja C#
    1. Dlaczego C#?
    2. Dlaczego nie C#?
    3. Najważniejsze cechy C#
      1. Kod zarządzany i CLR
      2. Ogólność jest ważniejsza od specjalizacji
      3. Programowanie asynchroniczne
    4. Visual Studio
    5. Anatomia prostego programu
      1. Dodawanie projektów do istniejącej solucji
      2. Odwołania do innych projektów
      3. Pisanie testu jednostkowego
      4. Przestrzenie nazw
        1. Zagnieżdżone przestrzenie nazw
      5. Klasy
      6. Punkt wejścia do programu
      7. Testy jednostkowe
    6. Podsumowanie
  4. 2. Podstawy stosowania języka C#
    1. Zmienne lokalne
      1. Zakres
        1. Niejednoznaczności nazw zmiennych
        2. Instancje zmiennych lokalnych
    2. Instrukcje i wyrażenia
      1. Instrukcje
      2. Wyrażenia
    3. Komentarze i białe znaki
    4. Dyrektywy preprocesora
      1. Symbole kompilacji
      2. Dyrektywy #error oraz #warning
      3. Dyrektywa #line
      4. Dyrektywa #pragma
      5. Dyrektywy #region i #endregion
    5. Wbudowane typy danych
      1. Typy liczbowe
        1. Konwersje liczb
        2. Konteksty sprawdzane
        3. Typ BigInteger
      2. Wartości logiczne
      3. Znaki i łańcuchy znaków
      4. Object
    6. Operatory
    7. Sterowanie przepływem
      1. Decyzje logiczne przy użyciu instrukcji if
      2. Wielokrotny wybór przy użyciu instrukcji switch
      3. Pętle: while oraz do
      4. Pętle znane z języka C
      5. Przeglądanie kolekcji przy użyciu pętli foreach
    8. Podsumowanie
  5. 3. Typy
    1. Klasy
      1. Składowe statyczne
      2. Klasy statyczne
      3. Typy referencyjne
    2. Struktury
      1. Kiedy tworzyć typy wartościowe?
    3. Składowe
      1. Pola
      2. Konstruktory
      3. Metody
        1. Przekazywanie argumentów przez referencję
        2. Argumenty opcjonalne
        3. Metody rozszerzeń
      4. Właściwości
        1. Właściwości i zmienne typy wartościowe
      5. Indeksatory
      6. Operatory
      7. Zdarzenia
      8. Typy zagnieżdżone
    4. Interfejsy
    5. Typy wyliczeniowe
    6. Inne typy
      1. Typy anonimowe
    7. Typy i metody częściowe
    8. Podsumowanie
  6. 4. Typy ogólne
    1. Typy ogólne
    2. Ograniczenia
      1. Ograniczenia typu
      2. Ograniczenia typu referencyjnego
      3. Ograniczenia typu wartościowego
      4. Stosowanie wielu ograniczeń
    3. Wartości przypominające zero
    4. Metody ogólne
      1. Wnioskowanie typu
    5. Tajniki typów ogólnych
    6. Podsumowanie
  7. 5. Kolekcje
    1. Tablice
      1. Inicjalizacja tablic
      2. Użycie słowa kluczowego params do przekazywania zmiennej liczby argumentów
      3. Przeszukiwanie i sortowanie
      4. Tablice wielowymiarowe
        1. Tablice nieregularne
        2. Tablice prostokątne
      5. Kopiowanie i zmiana wielkości
    2. List<T>
    3. Interfejsy list i sekwencji
    4. Implementacja list i sekwencji
      1. Iteratory
      2. Klasa Collection<T>
      3. Klasa ReadOnlyCollection<T>
    5. Słowniki
      1. Słowniki posortowane
    6. Zbiory
    7. Kolejki i stosy
    8. Listy połączone
    9. Kolekcje współbieżne
    10. Krotki
    11. Podsumowanie
  8. 6. Dziedziczenie
    1. Dziedziczenie i konwersje
    2. Dziedziczenie interfejsów
    3. Typy ogólne
      1. Kowariancja i kontrawariancja
    4. System.Object
      1. Wszechobecne metody typu object
    5. Dostępność i dziedziczenie
    6. Metody wirtualne
      1. Metody abstrakcyjne
    7. Metody i klasy ostateczne
    8. Dostęp do składowych klas bazowych
    9. Dziedziczenie i tworzenie obiektów
    10. Specjalne typy bazowe
    11. Podsumowanie
  9. 7. Cykl życia obiektów
    1. Mechanizm odzyskiwania pamięci
      1. Określanie osiągalności danych
      2. Przypadkowe problemy mechanizmu odzyskiwania pamięci
      3. Słabe referencje
      4. Odzyskiwanie pamięci
      5. Tryby odzyskiwania pamięci
      6. Przypadkowe utrudnianie scalania
      7. Wymuszanie odzyskiwania pamięci
    2. Destruktory i finalizacja
      1. Finalizatory krytyczne
    3. Interfejs IDisposable
      1. Zwalnianie opcjonalne
    4. Pakowanie
      1. Pakowanie danych typu Nullable<T>
    5. Podsumowanie
  10. 8. Wyjątki
    1. Źródła wyjątków
      1. Wyjątki zgłaszane przez API
      2. Wyjątki w naszym kodzie
      3. Błędy wykrywane przez środowisko uruchomieniowe
    2. Obsługa wyjątków
      1. Obiekty wyjątków
      2. Wiele bloków catch
      3. Zagnieżdżone bloki try
      4. Bloki finally
    3. Zgłaszanie wyjątków
      1. Powtórne zgłaszanie wyjątków
      2. Sposób na szybkie zakończenie aplikacji
    4. Typy wyjątków
      1. Wyjątki niestandardowe
    5. Wyjątki nieobsługiwane
      1. Debugowanie i wyjątki
    6. Wyjątki asynchroniczne
    7. Podsumowanie
  11. 9. Delegaty, wyrażenia lambda i zdarzenia
    1. Typy delegatów
      1. Tworzenie delegatów
      2. MulticastDelegate — delegaty zbiorowe
      3. Wywoływanie delegatów
      4. Popularne typy delegatów
      5. Zgodność typów
      6. Więcej niż składnia
    2. Metody inline
      1. Przechwytywane zmienne
      2. Wyrażenia lambda oraz drzewa wyrażeń
    3. Zdarzenia
      1. Standardowy wzorzec delegatów zdarzeń
      2. Niestandardowe metody dodające i usuwające zdarzenia
      3. Zdarzenia i mechanizm odzyskiwania pamięci
      4. Zdarzenia a delegaty
    4. Delegaty a interfejsy
    5. Podsumowanie
  12. 10. LINQ
    1. Wyrażenia zapytań
      1. Jak są rozwijane wyrażenia zapytań
      2. Obsługa wyrażeń zapytań
    2. Przetwarzanie opóźnione
    3. LINQ, typy ogólne oraz interfejs IQueryable<T>
    4. Standardowe operatory LINQ
      1. Filtrowanie
      2. Selekcja
        1. Kształtowanie danych oraz typy anonimowe
        2. Projekcje i odwzorowania
      3. Operator SelectMany
      4. Określanie porządku
      5. Testy zawierania
      6. Konkretne elementy i podzakresy
      7. Agregacja
      8. Operacje na zbiorach
      9. Operatory działające na całych sekwencjach z zachowaniem kolejności
      10. Grupowanie
      11. Złączenia
      12. Konwersje
    5. Generowanie sekwencji
    6. Inne implementacje LINQ
      1. Entity Framework
      2. LINQ to SQL
      3. Klient WCF Data Services
      4. Parallel LINQ (PLINQ)
      5. LINQ to XML
      6. Reactive Extensions
    7. Podsumowanie
  13. 11. Reactive Extensions
    1. Rx oraz różne wersje .NET Framework
    2. Podstawowe interfejsy
      1. Interfejs IObserver<T>
      2. Interfejs IObservable<T>
        1. Implementacja źródeł zimnych
        2. Implementacja źródeł ciepłych
    3. Publikowanie i subskrypcja z wykorzystaniem delegatów
      1. Tworzenie źródła przy wykorzystaniu delegatów
      2. Subskrybowanie obserwowalnych źródeł przy użyciu delegatów
    4. Generator sekwencji
      1. Empty
      2. Never
      3. Return
      4. Throw
      5. Range
      6. Repeat
      7. Generate
    5. Zapytania LINQ
      1. Operatory grupowania
      2. Operatory Join
      3. Operator SelectMany
      4. Agregacja oraz inne operatory zwracające jedną wartość
      5. Operator Concat
    6. Operatory biblioteki Rx
      1. Merge
      2. Operatory Buffer i Window
        1. Wyznaczanie okien przy użyciu obiektów obserwowalnych
      3. Operator Scan
      4. Operator Amb
      5. DistinctUntilChanged
    7. Mechanizmy szeregujące
      1. Określanie mechanizmów szeregujących
        1. ObserveOn
        2. SubscribeOn
        3. Jawne przekazywanie mechanizmów szeregujących
      2. Wbudowane mechanizmy szeregujące
    8. Tematy
      1. Subject<T>
      2. BehaviorSubject<T>
      3. ReplaySubject<T>
      4. AsyncSubject<T>
    9. Dostosowanie
      1. IEnumerable<T>
      2. Zdarzenia .NET
      3. API asynchroniczne
    10. Operacje z uzależnieniami czasowymi
      1. Interval
      2. Timer
      3. Timestamp
      4. TimeInterval
      5. Throttle
      6. Sample
      7. Timeout
      8. Operatory okien czasowych
      9. Delay
      10. DelaySubscription
    11. Podsumowanie
  14. 12. Podzespoły
    1. Visual Studio i podzespoły
    2. Anatomia podzespołu
      1. Metadane .NET
      2. Zasoby
      3. Podzespoły składające się z wielu plików
      4. Inne możliwości formatu PE
        1. Konsola kontra graficzny interfejs użytkownika
        2. Zasoby Win32
    3. Tożsamość typu
    4. Wczytywanie podzespołów
      1. Jawne wczytywanie podzespołów
      2. Global Assembly Cache
    5. Nazwy podzespołów
      1. Silne nazwy
      2. Numer wersji
        1. Numery wersji a wczytywanie podzespołów
      3. Identyfikator kulturowy
      4. Architektura procesora
    6. Przenośne biblioteki klas
    7. Wdrażanie pakietów
      1. Aplikacje dla systemu Windows 8
      2. ClickOnce oraz XBAP
      3. Aplikacje Silverlight oraz Windows Phone
    8. Zabezpieczenia
    9. Podsumowanie
  15. 13. Odzwierciedlanie
    1. Typy odzwierciedlania
      1. Assembly
      2. Module
      3. MemberInfo
      4. Type oraz TypeInfo
        1. Typy ogólne
      5. MethodBase, ConstructorInfo oraz MethodInfo
      6. ParameterInfo
      7. FieldInfo
      8. PropertyInfo
      9. EventInfo
    2. Konteksty odzwierciedlania
    3. Podsumowanie
  16. 14. Dynamiczne określanie typów
    1. Typ dynamic
    2. Słowo kluczowe dynamic i mechanizmy współdziałania
      1. Silverlight i obiekty skryptowe
      2. Dynamiczne języki .NET
    3. Tajniki typu dynamic
      1. Ograniczenia typu dynamic
      2. Niestandardowe obiekty dynamiczne
      3. Klasa ExpandoObject
    4. Ograniczenia typu dynamic
    5. Podsumowanie
  17. 15. Atrybuty
    1. Stosowanie atrybutów
      1. Cele atrybutów
      2. Atrybuty obsługiwane przez kompilator
        1. Nazwy i wersje
        2. Opis oraz inne, powiązane z nim zasoby
        3. Atrybuty z informacjami o kodzie wywołującym
      3. Atrybuty obsługiwane przez CLR
        1. InternalsVisibleToAttribute
        2. Serializacja
        3. Bezpieczeństwo
        4. Kompilacja JIT
        5. STAThread oraz MTAThread
        6. Współdziałanie
    2. Definiowanie i stosowanie atrybutów niestandardowych
      1. Typ atrybutu
      2. Pobieranie atrybutów
        1. Wczytywanie w celach wykonania operacji odzwierciedlania
    3. Podsumowanie
  18. 16. Pliki i strumienie
    1. Klasa Stream
      1. Położenie i poruszanie się w strumieniu
      2. Opróżnianie strumienia
      3. Kopiowanie
      4. Length
      5. Zwalnianie strumieni
      6. Operacje asynchroniczne
      7. Konkretne typy strumieni
    2. Windows 8 oraz interfejs IRandomAccessStream
    3. Typy operujące na tekstach
      1. TextReader oraz TextWriter
      2. Konkretne typy do odczytu i zapisu łańcuchów znaków
        1. StreamReader oraz StreamWriter
        2. StringReader oraz StringWriter
      3. Kodowanie
        1. Kodowania wykorzystujące strony kodowe
        2. Bezpośrednie stosowanie różnych sposobów kodowania
    4. Pliki i katalogi
      1. Klasa FileStream
      2. Klasa File
      3. Klasa Directory
      4. Klasa Path
      5. Klasy FileInfo, DirectoryInfo oraz FileSystemInfo
      6. Znane katalogi
    5. Serializacja
      1. Klasy BinaryReader oraz BinaryWriter
      2. Serializacja CLR
      3. Serializacja kontraktu danych
        1. Słowniki
      4. Klasa XmlSerializer
    6. Podsumowanie
  19. 17. Wielowątkowość
    1. Wątki
      1. Wątki, zmienne i wspólny stan
        1. Pamięć lokalna wątku
      2. Klasa Thread
      3. Pula wątków
        1. Uruchamianie prac przy wykorzystaniu klasy Task
        2. Heurystyki tworzenia wątków
        3. Wątki kończenia operacji wejścia-wyjścia
      4. Powinowactwo do wątku oraz klasa SynchronizationContext
        1. Klasa ExecutionContext
    2. Synchronizacja
      1. Monitory oraz słowo kluczowe lock
        1. Jak jest przekształcana instrukcja lock
        2. Oczekiwanie i powiadomienia
        3. Limity czasu
      2. Klasa SpinLock
      3. Blokady odczytu i zapisu
      4. Obiekty zdarzeń
      5. Klasa Barrier
      6. Klasa CountdownEvent
      7. Semafory
      8. Muteksy
      9. Klasa Interlocked
      10. Leniwa inicjalizacja
        1. Klasa Lazy<T>
        2. Klasa LazyInitializer
      11. Pozostałe klasy obsługujące działania współbieżne
    3. Zadania
      1. Klasy Task oraz Task<T>
        1. Opcje tworzenia zadań
        2. Statusy zadań
        3. Pobieranie wyników
      2. Kontynuacje
        1. Opcje kontynuacji
      3. Mechanizmy szeregujące
      4. Obsługa błędów
      5. Niestandardowe zadania bezwątkowe
      6. Związki zadanie nadrzędne — zadanie podrzędne
      7. Zadania złożone
    4. Inne wzorce asynchroniczne
    5. Anulowanie
    6. Równoległość
      1. Klasa Parallel
      2. Parallel LINQ
      3. TPL Dataflow
    7. Podsumowanie
  20. 18. Asynchroniczne cechy języka
    1. Nowe słowa kluczowe: async oraz await
      1. Konteksty wykonania i synchronizacji
      2. Wykonywanie wielu operacji i pętli
      3. Zwracanie obiektu Task
      4. Stosowanie async w metodach zagnieżdżonych
    2. Wzorzec słowa kluczowego await
    3. Obsługa błędów
      1. Weryfikacja poprawności argumentów
      2. Wyjątki pojedyncze oraz grupy wyjątków
      3. Operacje równoległe i nieobsłużone wyjątki
    4. Podsumowanie
  21. 19. XAML
    1. Platformy XAML
      1. WPF
      2. Silverlight
      3. Windows Phone 7
      4. Windows Runtime oraz aplikacje dostosowane do interfejsu użytkownika Windows 8
    2. Podstawy XAML
      1. Przestrzenie nazw XAML oraz XML
      2. Generowane klasy i kod ukryty
      3. Elementy podrzędne
      4. Elementy właściwości
      5. Obsługa zdarzeń
      6. Wykorzystanie wątków
    3. Układ
      1. Właściwości
        1. Wyrównanie
        2. Marginesy i wypełnienia
        3. Szerokość i wysokość
      2. Panele
        1. Canvas
        2. StackPanel
        3. Grid
        4. Wyspecjalizowane panele Windows Runtime
        5. Panele WPF
      3. ScrollViewer
      4. Zdarzenia związane z układem
    4. Kontrolki
      1. Kontrolki z zawartością
      2. Kontrolki Slider oraz ScrollBar
      3. Kontrolki postępów
      4. Listy
        1. Kontrolki list dostępne w Windows Runtime
        2. Kontrolki list WPF
      5. Szablony kontrolek
        1. Wiązanie szablonów
        2. Menedżer stanu wizualnego
      6. Kontrolki użytkownika
    5. Tekst
      1. Wyświetlanie tekstów
        1. Bloki i rozkład tekstu
      2. Edycja tekstów
    6. Wiązanie danych
      1. Szablony danych
    7. Grafika
      1. Kształty
      2. Bitmapy
        1. ImageBrush
      3. Media
    8. Style
    9. Podsumowanie
  22. 20. ASP.NET
    1. Razor
      1. Wyrażenia
      2. Sterowanie przepływem
      3. Bloki kodu
      4. Jawne wskazywanie treści
      5. Klasy i obiekty stron
      6. Stosowanie innych komponentów
      7. Strony układu
      8. Strony początkowe
    2. Web Forms
      1. Kontrolki serwerowe
        1. Serwerowe kontrolki HTML
      2. Wyrażenia
      3. Bloki kodu
      4. Standardowe obiekty stron
      5. Klasy i obiekty stron
      6. Stosowanie innych komponentów
      7. Strony nadrzędne
    3. MVC
      1. Typowy układ projektu MVC
        1. Kontrolery
        2. Modele
        3. Widoki
      2. Pisanie modeli
      3. Pisanie widoków
      4. Pisanie kontrolerów
      5. Obsługa dodatkowych danych wejściowych
      6. Generowanie łączy do akcji
    4. Trasowanie
    5. Podsumowanie
  23. 21. Współdziałanie
    1. Wywoływanie kodu rodzimego
      1. Szeregowanie
        1. Obsługa łańcuchów znaków
        2. Obiekty
        3. Wskaźniki do funkcji
        4. Struktury
        5. Tablice
      2. Procesy 32- i 64-bitowe
      3. Bezpieczne uchwyty
      4. Bezpieczeństwo
    2. Mechanizm Platform Invoke
      1. Konwencje wywołań
      2. Obsługa łańcuchów znaków
      3. Nazwa punktu wejścia
      4. Wartości wynikowe technologii COM
      5. Obsługa błędów Win32
    3. Technologia COM
      1. Czas życia obiektów RCW
      2. Metadane
        1. Główne podzespoły współdziałania
      3. Skrypty
    4. Windows Runtime
      1. Metadane
      2. Typy Windows Runtime
      3. Bufory
    5. Niebezpieczny kod
    6. C++/CLI i Component Extensions
    7. Podsumowanie
  24. A. O autorze
  25. Indeks
  26. Kolofon
  27. Copyright