- Page 2 and 3:
C# in DepthLicensed to Rhona Hadida
- Page 4:
C# in DepthJON SKEETMANNINGGreenwic
- Page 7 and 8:
Licensed to Rhona Hadida
- Page 9 and 10:
Licensed to Rhona Hadida
- Page 11 and 12:
xCONTENTS1.3 The .NET platform 24Di
- Page 13 and 14:
xiiCONTENTS5.4 Inline delegate acti
- Page 15 and 16:
xivCONTENTS9.4 Changes to type infe
- Page 17 and 18:
xviCONTENTS13.2 Delegation as the n
- Page 19 and 20:
xviiiFOREWORDOf the latter kind, th
- Page 21 and 22:
xxPREFACEdidn’t start using C#2 u
- Page 23 and 24:
xxiiACKNOWLEDGMENTSThe aforemention
- Page 25 and 26:
xxivABOUT THIS BOOKwant to become e
- Page 27 and 28:
xxviABOUT THIS BOOKSQL statements.
- Page 29 and 30:
about the cover illustrationThe cap
- Page 31 and 32:
xxxCOMMENTS FROM THE TECH REVIEWThi
- Page 33 and 34:
Chapter 1 presents a bird’s-eye v
- Page 35 and 36:
4 CHAPTER 1 The changing face of C#
- Page 37 and 38:
6 CHAPTER 1 The changing face of C#
- Page 39 and 40:
8 CHAPTER 1 The changing face of C#
- Page 41 and 42:
10 CHAPTER 1 The changing face of C
- Page 43 and 44:
12 CHAPTER 1 The changing face of C
- Page 45 and 46:
14 CHAPTER 1 The changing face of C
- Page 47 and 48:
16 CHAPTER 1 The changing face of C
- Page 49 and 50:
18 CHAPTER 1 The changing face of C
- Page 51 and 52:
20 CHAPTER 1 The changing face of C
- Page 53 and 54:
22 CHAPTER 1 The changing face of C
- Page 55 and 56:
24 CHAPTER 1 The changing face of C
- Page 57 and 58:
26 CHAPTER 1 The changing face of C
- Page 59 and 60:
28 CHAPTER 1 The changing face of C
- Page 61 and 62:
30 CHAPTER 1 The changing face of C
- Page 63 and 64:
Core foundations:building on C# 1Th
- Page 65 and 66:
34 CHAPTER 2 Core foundations: buil
- Page 67 and 68:
36 CHAPTER 2 Core foundations: buil
- Page 69 and 70:
38 CHAPTER 2 Core foundations: buil
- Page 71 and 72:
40 CHAPTER 2 Core foundations: buil
- Page 73 and 74:
42 CHAPTER 2 Core foundations: buil
- Page 75 and 76:
44 CHAPTER 2 Core foundations: buil
- Page 77 and 78:
46 CHAPTER 2 Core foundations: buil
- Page 79 and 80:
48 CHAPTER 2 Core foundations: buil
- Page 81 and 82:
50 CHAPTER 2 Core foundations: buil
- Page 83 and 84:
52 CHAPTER 2 Core foundations: buil
- Page 86 and 87:
C# 2 and 3: new features on a solid
- Page 88 and 89:
C# 2 and 3: new features on a solid
- Page 90 and 91:
Summary59Listing 2.7 shows a number
- Page 92 and 93:
Part 2C#2:solving the issuesof C#1I
- Page 94 and 95:
Parameterizedtyping with genericsTh
- Page 96 and 97:
Simple generics for everyday use65o
- Page 98 and 99:
Simple generics for everyday use67I
- Page 100 and 101:
Simple generics for everyday use69t
- Page 102 and 103:
Simple generics for everyday use71N
- Page 104 and 105:
Simple generics for everyday use73}
- Page 106 and 107:
Beyond the basics75parameters. You
- Page 108 and 109:
Beyond the basics77NOTEC# vs. CLI s
- Page 110 and 111:
Beyond the basics79combined togethe
- Page 112 and 113:
Beyond the basics813.3.3 Implementi
- Page 114 and 115:
Beyond the basics83derive from a pa
- Page 116 and 117:
Advanced generics85implement IEquat
- Page 118 and 119:
Advanced generics87within another,
- Page 120 and 121:
Advanced generics89ArrayListobject[
- Page 122 and 123:
Advanced generics91}{}return new Co
- Page 124 and 125:
Advanced generics93Listing 3.10Usin
- Page 126 and 127:
Advanced generics95REFLECTING GENER
- Page 128 and 129:
Generic collection classes in .NET
- Page 130 and 131:
Generic collection classes in .NET
- Page 132 and 133:
Generic collection classes in .NET
- Page 134 and 135:
Limitations of generics in C# and o
- Page 136 and 137:
Limitations of generics in C# and o
- Page 138 and 139:
Limitations of generics in C# and o
- Page 140 and 141:
Limitations of generics in C# and o
- Page 142 and 143:
Summary111My personal opinion is th
- Page 144 and 145:
What do you do when you just don’
- Page 146 and 147:
System.Nullable and System.Nullable
- Page 148 and 149:
System.Nullable and System.Nullable
- Page 150 and 151:
System.Nullable and System.Nullable
- Page 152 and 153:
C# 2’s syntactic sugar for nullab
- Page 154 and 155:
C# 2’s syntactic sugar for nullab
- Page 156 and 157:
C# 2’s syntactic sugar for nullab
- Page 158 and 159:
C# 2’s syntactic sugar for nullab
- Page 160 and 161:
C# 2’s syntactic sugar for nullab
- Page 162 and 163:
Novel uses of nullable types131part
- Page 164 and 165:
Novel uses of nullable types133else
- Page 166 and 167:
Novel uses of nullable types135}{}i
- Page 168 and 169:
Fast-tracked delegatesThis chapter
- Page 170 and 171:
Saying goodbye to awkward delegate
- Page 172 and 173:
Covariance and contravariance141met
- Page 174 and 175:
Covariance and contravariance143som
- Page 176 and 177:
Inline delegate actions with anonym
- Page 178 and 179:
Inline delegate actions with anonym
- Page 180 and 181:
Inline delegate actions with anonym
- Page 182 and 183:
Capturing variables in anonymous me
- Page 184 and 185:
Capturing variables in anonymous me
- Page 186 and 187:
Capturing variables in anonymous me
- Page 188 and 189:
Capturing variables in anonymous me
- Page 190 and 191:
Capturing variables in anonymous me
- Page 192 and 193:
Implementingiterators the easy wayT
- Page 194 and 195:
C# 1: the pain of handwritten itera
- Page 196 and 197:
C# 2: simple iterators with yield s
- Page 198 and 199:
C# 2: simple iterators with yield s
- Page 200 and 201:
C# 2: simple iterators with yield s
- Page 202 and 203:
C# 2: simple iterators with yield s
- Page 204 and 205:
Real-life example: iterating over r
- Page 206 and 207:
Real-life example: iterating over r
- Page 208 and 209:
Real-life example: iterating over r
- Page 210 and 211:
Pseudo-synchronous code with the Co
- Page 212 and 213:
Summary181(without using a dedicate
- Page 214 and 215:
Concluding C# 2:the final featuresT
- Page 216 and 217:
Partial types185C# 2 allows more th
- Page 218 and 219:
Partial types187code generator can
- Page 220 and 221:
Partial types189Listing 7.2A partia
- Page 222 and 223:
Static classes191}public static str
- Page 224 and 225:
Namespace aliases193same syntax is
- Page 226 and 227:
Namespace aliases195Listing 7.6usin
- Page 228 and 229:
Pragma directives197}}Console.Write
- Page 230 and 231:
Fixed-size buffers in unsafe code19
- Page 232 and 233:
Exposing internal members to select
- Page 234 and 235:
Exposing internal members to select
- Page 236 and 237:
Part 3C# 3—revolutionizinghow we
- Page 238 and 239:
Cutting fluffwith a smart compilerT
- Page 240 and 241:
Automatically implemented propertie
- Page 242 and 243:
Implicit typing of local variables2
- Page 244 and 245:
Implicit typing of local variables2
- Page 246 and 247:
Simplified initialization215simple
- Page 248 and 249:
Simplified initialization217The par
- Page 250 and 251:
Simplified initialization219CREATIN
- Page 252 and 253:
Simplified initialization221Home =
- Page 254 and 255:
Implicitly typed arrays2238.4 Impli
- Page 256 and 257:
Anonymous types225new { Name = "Hol
- Page 258 and 259:
Anonymous types227That certainly wo
- Page 260 and 261:
Summary229typed local variables—a
- Page 262 and 263:
Lambda expressions and expression t
- Page 264 and 265:
Lambda expressions as delegates233L
- Page 266 and 267:
Simple examples using List and even
- Page 268 and 269:
Simple examples using List and even
- Page 270 and 271:
Expression trees239code to run on y
- Page 272 and 273:
Expression trees241So, what’s the
- Page 274 and 275:
Expression trees243the tree and how
- Page 276 and 277:
Changes to type inference and overl
- Page 278 and 279:
Changes to type inference and overl
- Page 280 and 281:
Changes to type inference and overl
- Page 282 and 283:
Changes to type inference and overl
- Page 284 and 285:
Summary253find the better conversio
- Page 286 and 287:
Extension methodsThis chapter cover
- Page 288 and 289:
Life before extension methods257Sys
- Page 290 and 291:
Extension method syntax259extension
- Page 292 and 293:
Extension method syntax26110.2.3 Ho
- Page 294 and 295:
Extension methods in .NET 3.5263pub
- Page 296 and 297:
Extension methods in .NET 3.5265ret
- Page 298 and 299:
Extension methods in .NET 3.5267as
- Page 300 and 301:
Extension methods in .NET 3.5269Now
- Page 302 and 303:
Usage ideas and guidelines271extens
- Page 304 and 305:
Usage ideas and guidelines273those
- Page 306 and 307:
Query expressionsand LINQ to Object
- Page 308 and 309:
Introducing LINQ277the extension me
- Page 310 and 311:
Introducing LINQ279Figure 11.1 show
- Page 312 and 313:
Introducing LINQ281flexible. In par
- Page 314 and 315:
Simple beginnings: selecting elemen
- Page 316 and 317: Simple beginnings: selecting elemen
- Page 318 and 319: Simple beginnings: selecting elemen
- Page 320 and 321: Simple beginnings: selecting elemen
- Page 322 and 323: Filtering and ordering a sequence29
- Page 324 and 325: Filtering and ordering a sequence29
- Page 326 and 327: Let clauses and transparent identif
- Page 328 and 329: Joins29711.5 JoinsEach part of the
- Page 330 and 331: Joins299from defect inSampleData.Al
- Page 332 and 333: Joins30111.5.2 Group joins with joi
- Page 334 and 335: Joins303foreach (var grouped in que
- Page 336 and 337: Joins305from user inSampleData.AllU
- Page 338 and 339: Groupings and continuations307In ju
- Page 340 and 341: Groupings and continuations309from
- Page 342 and 343: Groupings and continuations311perso
- Page 344 and 345: Summary31311.7 SummaryIn this chapt
- Page 346 and 347: LINQ to SQL315LINQ to DataSet and L
- Page 348 and 349: LINQ to SQL317■ I changed the typ
- Page 350 and 351: LINQ to SQL319each of type Table fo
- Page 352 and 353: LINQ to SQL321FROM [dbo].[Defect] A
- Page 354 and 355: LINQ to SQL323FROM [dbo].[Notificat
- Page 356 and 357: LINQ to SQL325using (var context =
- Page 358 and 359: Translations using IQueryable and I
- Page 360 and 361: Translations using IQueryable and I
- Page 362 and 363: Translations using IQueryable and I
- Page 364 and 365: Translations using IQueryable and I
- Page 368 and 369: LINQ to DataSet337Creating and popu
- Page 370 and 371: LINQ to XML339■ Create a document
- Page 372 and 373: LINQ to XML341You can nest query ex
- Page 374 and 375: LINQ to XML343need the string form,
- Page 376 and 377: LINQ beyond .NET 3.5345Listing 12.1
- Page 378 and 379: LINQ beyond .NET 3.5347LINQ TO ACTI
- Page 380 and 381: LINQ beyond .NET 3.5349All of the L
- Page 382 and 383: Summary351you look back at all the
- Page 384 and 385: The changing nature of language pre
- Page 386 and 387: Delegation as the new inheritance35
- Page 388 and 389: Life in a parallel universe357Array
- Page 390 and 391: appendix:LINQ standardquery operato
- Page 392 and 393: Conversion361Cast and OfType conver
- Page 394 and 395: Equality operations363A.4 Element o
- Page 396 and 397: Joins365A.7 GroupingThere are two g
- Page 398 and 399: Quantifiers367Table A.9Partitioning
- Page 400 and 401: Sorting369For the examples of these
- Page 402 and 403: indexSymbols!= 82with generics 76#p
- Page 404 and 405: INDEX 373C# (continued)influences 1
- Page 406 and 407: INDEX 375confusion 150, 222over cap
- Page 408 and 409: INDEX 377Document Object Model (DOM
- Page 410 and 411: INDEX 379fully qualified type name
- Page 412 and 413: INDEX 381interfaces (continued)no c
- Page 414 and 415: INDEX 383List`1 93lists 278local va
- Page 416 and 417:
INDEX 385Nullable (continued)Value
- Page 418 and 419:
INDEX 387RRails 22random access 102
- Page 420 and 421:
INDEX 389Standard Query Operators (
- Page 422 and 423:
INDEX 391type parameters (continued