C od podszewki Wydanie II.pdf

(931 KB) Pobierz
Tytuł oryginału: C# in Depth, Second Edition
Tłumaczenie: Janusz Grabis
Projekt okładki: Studio Gravite / Olsztyn
Obarek, Pokoński, Pazdrijowski, Zaprucki
ISBN: 978-83-246-3921-2
Original edition copyright © 2011 by Manning Publications Co.
All rights reserved.
Polish edition copyright © 2012 by HELION SA.
All rights reserved.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from the Publisher.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte
w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich
wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz
Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe
z wykorzystania informacji zawartych w książce.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail: helion@helion.pl
WWW: http://helion.pl (księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/cshop2
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
Kup książkę
Poleć książkę
Oceń książkę
Księgarnia internetowa
Lubię to! » Nasza społeczność
Spis tre ci
7
Spis tre ci
Przedmowa
WstÚp
PodziÚkowania
O ksiÈ ce
17
19
21
23
CzÚ Ê I
1.
1.1.
Przygotowanie do wyprawy
31
33
NieustajÈca metamorfoza C#
1.2.
1.3.
1.4.
Na poczÈtek prosty typ danych ................................................................................................... 34
1.1.1. Typ Product w C# 1 ....................................................................................................... 35
1.1.2. Kolekcje o mocnym typie w C# 2 ................................................................................. 36
1.1.3. Wïa ciwo ci implementowane automatycznie w C# 3 ................................................ 37
1.1.4. Argumenty nazwane w C# 4 ......................................................................................... 38
Sortowanie i filtrowanie .............................................................................................................. 39
1.2.1. Sortowanie produktów po nazwie .................................................................................. 40
1.2.2. Wyszukiwanie elementów w kolekcjach ....................................................................... 43
Obsïuga braku danych ................................................................................................................. 44
1.3.1. Reprezentacja nieznanej ceny ........................................................................................ 45
1.3.2. Parametry opcjonalne i warto ci domy lne ................................................................... 46
Wprowadzenie do LINQ ............................................................................................................. 46
1.4.1. Wyra enia kwerendowe i zapytania wewnÈtrzprocesowe ........................................... 47
1.4.2. Wykonywanie zapytañ na XML-u ................................................................................. 48
1.4.3. LINQ dla SQL-a ............................................................................................................. 49
Kup książkę
Poleć książkę
8
SPIS TRE CI
1.5.
1.6.
1.7.
1.8.
COM i typy dynamiczne .............................................................................................................. 50
1.5.1. Uproszczenie wspóïpracy z COM ................................................................................. 50
1.5.2. Wspóïpraca z jÚzykiem dynamicznym ........................................................................... 51
Analiza zawarto ci rodowiska .NET ......................................................................................... 52
1.6.1. JÚzyk C# ......................................................................................................................... 53
1.6.2. ¥rodowisko wykonania ................................................................................................... 53
1.6.3. Biblioteki rodowiska ...................................................................................................... 54
Jak zmieniÊ Twój kod w kod doskonaïy? ................................................................................... 54
1.7.1. Prezentacja peïnych programów w formie fragmentów kodu ...................................... 55
1.7.2. Kod dydaktyczny nie jest kodem produkcyjnym .......................................................... 56
1.7.3. Twój nowy najlepszy przyjaciel — specyfikacja jÚzyka ................................................ 56
Podsumowanie .............................................................................................................................. 57
2.
Rdzeñ systemu — C# 1
2.1.
59
2.2.
2.3.
2.4.
2.5.
Delegaty ........................................................................................................................................ 60
2.1.1. Przepis na prosty delegat ................................................................................................ 61
2.1.2. Èczenie i usuwanie delegatów ..................................................................................... 66
2.1.3. Dygresja na temat zdarzeñ ............................................................................................. 67
2.1.4. Podsumowanie delegatów .............................................................................................. 68
Charakterystyka systemu typów ................................................................................................. 69
2.2.1. Miejsce C# w wiecie systemów typów ........................................................................ 69
2.2.2. Kiedy system typów C# 1 jest niedostatecznie bogaty? .............................................. 73
2.2.3. Podsumowanie charakterystyki systemu typów ............................................................ 75
Typy warto ciowe i referencyjne ............................................................................................... 76
2.3.1. Warto ci i referencje w rzeczywistym wiecie .............................................................. 76
2.3.2. Podstawy typów referencyjnych i warto ciowych ........................................................ 77
2.3.3. Obalanie mitów ............................................................................................................... 79
2.3.4. Opakowywanie i odpakowywanie .................................................................................. 81
2.3.5. Podsumowanie typów warto ciowych i referencyjnych ............................................... 82
WiÚcej ni C# 1 — nowe cechy na solidnym fundamencie .................................................... 83
2.4.1. Cechy zwiÈzane z delegatami ........................................................................................ 83
2.4.2. Cechy zwiÈzane z systemem typów ............................................................................... 85
2.4.3. Cechy zwiÈzane z typami warto ciowymi ..................................................................... 87
Podsumowanie .............................................................................................................................. 88
CzÚ Ê II
3.
3.1.
3.2.
C# 2 — rozwiÈzanie problemów C# 1
89
91
Parametryzowanie typów i metod
3.3.
3.4.
Czemu potrzebne sÈ typy generyczne? ...................................................................................... 92
Proste typy generyczne do codziennego u ycia ........................................................................ 94
3.2.1. Nauka przez przykïad — sïownik typu generycznego ................................................. 94
3.2.2. Typy generyczne i parametry typów ............................................................................. 96
3.2.3. Metody generyczne i czytanie deklaracji generycznych ............................................ 100
Wkraczamy gïÚbiej .................................................................................................................... 103
3.3.1. Ograniczenia typów ...................................................................................................... 104
3.3.2. Interfejs argumentów typu dla metod generycznych ................................................. 109
3.3.3. Implementowanie typów generycznych ...................................................................... 110
Zaawansowane elementy typów generycznych ....................................................................... 116
3.4.1. Pola i konstruktory statyczne ....................................................................................... 117
3.4.2. Jak kompilator JIT traktuje typy generyczne .............................................................. 119
Kup książkę
Poleć książkę
Spis tre ci
9
3.5.
3.6.
3.4.3. Iteracja przy u yciu typów generycznych ................................................................... 121
3.4.4. Refleksja i typy generyczne .......................................................................................... 123
Ograniczenia typów generycznych C# i innych jÚzyków ...................................................... 128
3.5.1. Brak wariancji typów generycznych ............................................................................ 128
3.5.2. Brak ograniczeñ operatorów lub ograniczeñ „numerycznych” .................................. 133
3.5.3. Brak generycznych wïa ciwo ci, indekserów i innych elementów typu ................... 135
3.5.4. Porównanie z C++ ...................................................................................................... 136
3.5.5. Porównanie z typami generycznymi Javy .................................................................... 137
Podsumowanie ............................................................................................................................ 139
4.
Wyra anie „niczego” przy u yciu typów nullowalnych
4.1.
141
4.2.
4.3.
4.4.
4.5.
Co robisz, kiedy zwyczajnie nie masz warto ci? ..................................................................... 142
4.1.1. Czemu zmienne typu warto ciowego nie mogÈ zawieraÊ null? ................................. 142
4.1.2. Metody reprezentacji warto ci null w C# 1 ............................................................... 143
System.Nullable<T> i System.Nullable ................................................................................. 145
4.2.1. Wprowadzenie Nullable<T> ..................................................................................... 146
4.2.2. Opakowywanie i odpakowywanie Nullable<T> ....................................................... 149
4.2.3. Równo Ê instancji Nullable<T> ................................................................................. 150
4.2.4. Wsparcie ze strony niegenerycznej klasy Nullable .................................................... 151
Skïadnia C# 2 dla typów nullowalnych ................................................................................... 152
4.3.1. Modyfikator ? ................................................................................................................ 152
4.3.2. Przypisania i porównania z null ................................................................................... 154
4.3.3. Konwersje i operatory nullowalne ............................................................................... 156
4.3.4. Logika typów nullowalnych ......................................................................................... 159
4.3.5. Stosowanie operatora as z typami nullowalnymi ........................................................ 161
4.3.6. Nullowy operator koalescencyjny ................................................................................ 161
Nowatorskie zastosowania typów nullowalnych ..................................................................... 164
4.4.1. Testowanie operacji bez parametrów zwrotnych ........................................................ 165
4.4.2. Bezbolesne porównania przy u yciu nullowalnego operatora koalescencyjnego ..... 167
Podsumowanie ............................................................................................................................ 169
5.
Przyspieszone delegaty
5.1.
5.2.
5.3.
171
5.4.
5.5.
5.6.
Po egnanie z dziwacznÈ skïadniÈ delegatów .......................................................................... 173
Konwersja grupy metod ............................................................................................................ 174
Kowariancja i kontrawariancja ................................................................................................ 176
5.3.1. Kontrawariancja parametrów delegatów ..................................................................... 176
5.3.2. Kowariancja typu zwracanego delegata ....................................................................... 178
5.3.3. Maïe ryzyko niekompatybilno ci ................................................................................. 179
Akcje delegatów tworzone w miejscu przy u yciu metod anonimowych ............................. 180
5.4.1. Rozpoczynamy prosto — operujÈc na parametrach ................................................... 181
5.4.2. Zwracanie warto ci z metod anonimowych ................................................................. 183
5.4.3. Ignorowanie parametrów typu ..................................................................................... 185
Przechwytywanie zmiennych w metodach anonimowych ..................................................... 186
5.5.1. Definicja domkniÚcia i ró nych typów zmiennych ..................................................... 187
5.5.2. Analiza zachowania zmiennych przechwyconych ....................................................... 188
5.5.3. Jaki cel majÈ zmienne przechwycone? ........................................................................ 189
5.5.4. Przedïu one ycie zmiennych przechwyconych ......................................................... 190
5.5.5. Instancje zmiennej lokalnej .......................................................................................... 192
5.5.6. Mieszanka zmiennych wspóïdzielonych i odrÚbnych ................................................. 194
5.5.7. Wskazówki odno nie do zmiennych przechwyconych i podsumowanie ................... 196
Podsumowanie ............................................................................................................................ 197
Kup książkę
Poleć książkę
Zgłoś jeśli naruszono regulamin