- 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 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 366 and 367:
LINQ to DataSet335where defect.Fiel
- 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