Introduction |
|
xix | |
Part I: The OOP Language |
|
|
|
3 | (10) |
|
What Is the .NET Framework? |
|
|
4 | (4) |
|
What's in the .NET Framework? |
|
|
4 | (1) |
|
Writing Applications Using the .NET Framework |
|
|
5 | (3) |
|
|
8 | (2) |
|
Applications You Can Write with C# |
|
|
9 | (1) |
|
|
10 | (1) |
|
|
10 | (3) |
|
Visual Studio Express 2015 Products |
|
|
10 | (1) |
|
|
11 | (2) |
|
Chapter 2 Writing A C# Program |
|
|
13 | (16) |
|
The Visual Studio 2015 Development Environment |
|
|
14 | (3) |
|
|
17 | (5) |
|
|
20 | (1) |
|
|
21 | (1) |
|
|
22 | (1) |
|
|
22 | (7) |
|
Chapter 3 Variables And Expressions |
|
|
29 | (24) |
|
|
30 | (3) |
|
Basic C# Console Application Structure |
|
|
33 | (1) |
|
|
34 | (8) |
|
|
34 | (5) |
|
|
39 | (1) |
|
|
39 | (3) |
|
|
42 | (11) |
|
|
42 | (5) |
|
|
47 | (1) |
|
|
48 | (1) |
|
|
49 | (4) |
|
|
53 | (24) |
|
|
54 | (5) |
|
Boolean Bitwise and Assignment Operators |
|
|
56 | (2) |
|
Operator Precedence Updated |
|
|
58 | (1) |
|
|
59 | (7) |
|
|
59 | (1) |
|
|
59 | (4) |
|
|
63 | (3) |
|
|
66 | (11) |
|
|
66 | (3) |
|
|
69 | (2) |
|
|
71 | (1) |
|
|
72 | (1) |
|
|
73 | (4) |
|
Chapter 5 More About Variables |
|
|
77 | (30) |
|
|
78 | (7) |
|
|
78 | (2) |
|
|
80 | (3) |
|
Explicit Conversions Using the Convert Commands |
|
|
83 | (2) |
|
|
85 | (14) |
|
|
85 | (4) |
|
|
89 | (3) |
|
|
92 | (7) |
|
|
99 | (8) |
|
|
107 | (28) |
|
Defining and Using Functions |
|
|
108 | (11) |
|
|
110 | (2) |
|
|
112 | (7) |
|
|
119 | (6) |
|
Variable Scope in Other Structures |
|
|
122 | (1) |
|
Parameters and Return Values versus Global Data |
|
|
123 | (2) |
|
|
125 | (2) |
|
|
127 | (1) |
|
|
128 | (2) |
|
|
130 | (5) |
|
Chapter 7 Debugging And Error Handling |
|
|
135 | (28) |
|
Debugging in Visual Studio |
|
|
136 | (17) |
|
Debugging in Nonbreak (Normal) Mode |
|
|
136 | (8) |
|
|
144 | (9) |
|
|
153 | (10) |
|
|
153 | (7) |
|
Listing and Configuring Exceptions |
|
|
160 | (3) |
|
Chapter 8 Introduction To Object-Oriented Programming |
|
|
163 | (24) |
|
What Is Object-Oriented Programming? |
|
|
164 | (6) |
|
|
165 | (3) |
|
|
168 | (1) |
|
The Life Cycle of an Object |
|
|
168 | (1) |
|
Static and Instance Class Members |
|
|
169 | (1) |
|
|
170 | (10) |
|
|
171 | (1) |
|
|
172 | (3) |
|
|
175 | (2) |
|
Relationships between Objects |
|
|
177 | (2) |
|
|
179 | (1) |
|
|
180 | (1) |
|
Reference Types versus Value Types |
|
|
180 | (1) |
|
OOP in Desktop Applications |
|
|
180 | (7) |
|
Chapter 9 Defining Classes |
|
|
187 | (30) |
|
|
188 | (5) |
|
|
190 | (3) |
|
|
193 | (2) |
|
Constructors and Destructors |
|
|
195 | (5) |
|
Constructor Execution Sequence |
|
|
196 | (4) |
|
OOP Tools in Visual Studio |
|
|
200 | (6) |
|
|
200 | (2) |
|
|
202 | (1) |
|
|
203 | (1) |
|
|
204 | (2) |
|
|
206 | (3) |
|
Interfaces versus Abstract Classes |
|
|
209 | (3) |
|
|
212 | (2) |
|
Shallow Copying versus Deep Copying |
|
|
214 | (3) |
|
Chapter 10 Defining Class Members |
|
|
217 | (34) |
|
|
218 | (9) |
|
|
218 | (1) |
|
|
219 | (1) |
|
|
220 | (5) |
|
|
225 | (1) |
|
|
226 | (1) |
|
Additional Class Member Topics |
|
|
227 | (5) |
|
Hiding Base Class Methods |
|
|
227 | (2) |
|
Calling Overridden or Hidden Base Class Methods |
|
|
229 | (1) |
|
Using Nested Type Definitions |
|
|
230 | (2) |
|
|
232 | (3) |
|
Implementing Interfaces in Classes |
|
|
233 | (2) |
|
Partial Class Definitions |
|
|
235 | (2) |
|
Partial Method Definitions |
|
|
237 | (1) |
|
|
238 | (10) |
|
|
238 | (1) |
|
Writing the Class Library |
|
|
239 | (7) |
|
A Client Application for the Class Library |
|
|
246 | (2) |
|
The Call Hierarchy Window |
|
|
248 | (3) |
|
Chapter 11 Collections, Comparisons, And Conversions |
|
|
251 | (50) |
|
|
252 | (23) |
|
|
253 | (5) |
|
|
258 | (1) |
|
|
259 | (3) |
|
Adding a Cards Collection to CardLib |
|
|
262 | (2) |
|
Keyed Collections and 'Dictionary |
|
|
264 | (2) |
|
|
266 | (4) |
|
Iterators and Collections |
|
|
270 | (1) |
|
|
271 | (2) |
|
Adding Deep Copying to CardLib |
|
|
273 | (2) |
|
|
275 | (20) |
|
|
275 | (4) |
|
|
279 | (16) |
|
|
295 | (6) |
|
Overloading Conversion Operators |
|
|
295 | (2) |
|
|
297 | (4) |
|
|
301 | (40) |
|
|
302 | (1) |
|
|
303 | (18) |
|
|
303 | (8) |
|
The System.Collections.Generic Namespace |
|
|
311 | (10) |
|
|
321 | (14) |
|
|
322 | (10) |
|
Defining Generic Interfaces |
|
|
332 | (1) |
|
|
333 | (1) |
|
Defining Generic Delegates |
|
|
334 | (1) |
|
|
335 | (6) |
|
|
336 | (1) |
|
|
336 | (5) |
|
Chapter 13 Additional C# Techniques |
|
|
341 | (66) |
|
The :: Operator and the Global Namespace Qualifier |
|
|
342 | (1) |
|
|
343 | (2) |
|
Adding Custom Exceptions to CardLib |
|
|
343 | (2) |
|
|
345 | (12) |
|
|
345 | (2) |
|
|
347 | (3) |
|
|
350 | (7) |
|
Expanding and Using CardLib |
|
|
357 | (8) |
|
|
365 | (3) |
|
|
366 | (1) |
|
|
367 | (1) |
|
|
368 | (6) |
|
|
368 | (3) |
|
|
371 | (3) |
|
|
374 | (2) |
|
|
376 | (4) |
|
|
380 | (4) |
|
|
381 | (3) |
|
Advanced Method Parameters |
|
|
384 | (7) |
|
|
385 | (1) |
|
|
386 | (5) |
|
|
391 | (16) |
|
|
391 | (1) |
|
Lambda Expressions for Anonymous Methods |
|
|
392 | (4) |
|
Lambda Expression Parameters |
|
|
396 | (1) |
|
Lambda Expression Statement Bodies |
|
|
396 | (2) |
|
Lambda Expressions as Delegates and Expression Trees |
|
|
398 | (1) |
|
Lambda Expressions and Collections |
|
|
399 | (8) |
Part II: Windows Programming |
|
|
Chapter 14 Basic Desktop Programming |
|
|
407 | (54) |
|
|
408 | (3) |
|
|
409 | (1) |
|
|
409 | (2) |
|
|
411 | (11) |
|
|
412 | (1) |
|
|
413 | (4) |
|
|
417 | (5) |
|
|
422 | (11) |
|
|
423 | (1) |
|
Alignment, Margins, Padding, and Dimensions |
|
|
423 | (1) |
|
|
424 | (1) |
|
|
424 | (2) |
|
|
426 | (2) |
|
|
428 | (1) |
|
|
429 | (1) |
|
|
430 | (3) |
|
|
433 | (28) |
|
|
433 | (6) |
|
|
439 | (9) |
|
|
448 | (5) |
|
Starting a Game with the ListBox Control |
|
|
453 | (8) |
|
Chapter 15 Advanced Desktop Programming |
|
|
461 | (54) |
|
|
462 | (4) |
|
|
462 | (1) |
|
Routed Commands with Menus |
|
|
462 | (4) |
|
Creating and Styling Controls |
|
|
466 | (12) |
|
|
467 | (1) |
|
|
467 | (5) |
|
|
472 | (1) |
|
|
473 | (2) |
|
|
475 | (3) |
|
|
478 | (11) |
|
Implementing Dependency Properties |
|
|
478 | (11) |
|
|
489 | (26) |
|
Refactoring the Domain Model |
|
|
489 | (5) |
|
|
494 | (8) |
|
|
502 | (13) |
Part III: Cloud Programming |
|
|
Chapter 16 Basic Cloud Programming |
|
|
515 | (24) |
|
The Cloud, Cloud Computing, and the Cloud Optimized Stack |
|
|
516 | (3) |
|
Cloud Patterns and Best Practices |
|
|
519 | (1) |
|
Using Microsoft Azure C# Libraries to Create a Storage Container |
|
|
520 | (10) |
|
Creating an ASP.NET 4.6 Web Site That Uses the Storage Container |
|
|
530 | (9) |
|
Chapter 17 Advanced Cloud Programing And Deployment |
|
|
539 | (22) |
|
Creating an ASP.NET Web API |
|
|
540 | (4) |
|
Deploying and Consuming an ASP.NET Web API on Microsoft Azure |
|
|
544 | (7) |
|
Scaling an ASP.NET Web API on Microsoft Azure |
|
|
551 | (10) |
Part IV: Data Access |
|
|
|
561 | (32) |
|
File Classes for Input and Output |
|
|
562 | (5) |
|
The File and Directory Classes |
|
|
563 | (1) |
|
|
564 | (2) |
|
|
566 | (1) |
|
Path Names and Relative Paths |
|
|
566 | (1) |
|
|
567 | (17) |
|
Classes for Using Streams |
|
|
567 | (1) |
|
|
568 | (7) |
|
|
575 | (2) |
|
|
577 | (3) |
|
|
580 | (1) |
|
Reading and Writing Compressed Files |
|
|
580 | (4) |
|
Monitoring the File System |
|
|
584 | (9) |
|
|
593 | (24) |
|
|
594 | (1) |
|
|
594 | (1) |
|
|
595 | (2) |
|
XML Document Object Model |
|
|
597 | (12) |
|
|
598 | (1) |
|
|
598 | (5) |
|
Changing the Values of Nodes |
|
|
603 | (6) |
|
|
609 | (2) |
|
|
611 | (6) |
|
|
617 | (34) |
|
|
618 | (6) |
|
LINQ to XML Functional Constructors |
|
|
618 | (3) |
|
Working with XML Fragments |
|
|
621 | (3) |
|
|
624 | (1) |
|
|
624 | (4) |
|
Declaring a Variable for Results Using the var Keyword |
|
|
626 | (1) |
|
Specifying the Data Source: from Clause |
|
|
627 | (1) |
|
Specify Condition: where Clause |
|
|
627 | (1) |
|
Selecting Items: select Clause |
|
|
627 | (1) |
|
Finishing Up: Using the for each Loop |
|
|
628 | (1) |
|
|
628 | (1) |
|
|
628 | (4) |
|
|
629 | (1) |
|
Query Syntax versus Method Syntax |
|
|
629 | (1) |
|
|
630 | (2) |
|
|
632 | (1) |
|
Understanding the order by Clause |
|
|
633 | (1) |
|
Querying a Large Data Set |
|
|
634 | (2) |
|
Using Aggregate Operators |
|
|
636 | (4) |
|
Using the Select Distinct Query |
|
|
640 | (2) |
|
Ordering by Multiple Levels |
|
|
642 | (2) |
|
|
644 | (2) |
|
|
646 | (5) |
|
|
651 | (26) |
|
|
651 | (1) |
|
Installing SQL Server Express |
|
|
652 | (1) |
|
|
652 | (1) |
|
|
653 | (7) |
|
But Where Is My Database? |
|
|
660 | (1) |
|
Navigating Database Relationships |
|
|
661 | (7) |
|
|
668 | (1) |
|
Creating and Querying XML from an Existing Database |
|
|
669 | (8) |
Part V: Additional Techniques |
|
|
Chapter 22 Windows Communication Foundation |
|
|
677 | (32) |
|
|
678 | (1) |
|
|
679 | (5) |
|
WCF Communication Protocols |
|
|
679 | (1) |
|
Addresses, Endpoints, and Bindings |
|
|
680 | (2) |
|
|
682 | (1) |
|
|
683 | (1) |
|
|
683 | (1) |
|
|
683 | (1) |
|
|
684 | (25) |
|
|
690 | (3) |
|
Defining WCF Service Contracts |
|
|
693 | (7) |
|
|
700 | (9) |
|
Chapter 23 Universal Apps |
|
|
709 | (28) |
|
|
709 | (1) |
|
|
710 | (1) |
|
|
711 | (1) |
|
|
711 | (1) |
|
|
711 | (1) |
|
|
712 | (1) |
|
|
712 | (1) |
|
|
712 | (1) |
|
|
712 | (20) |
|
|
713 | (8) |
|
|
721 | (4) |
|
|
725 | (3) |
|
|
728 | (1) |
|
|
729 | (3) |
|
Common Elements of Windows Store Apps |
|
|
732 | (1) |
|
|
733 | (4) |
|
|
733 | (1) |
|
|
734 | (3) |
Appendix: Exercise Solutions |
|
737 | (44) |
Index |
|
781 | |