C# 6 for Programmers

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

The professional programmer's Deitel(R) guide to C# 6 and object-oriented development for Windows(R) Written for programmers with a background in high-level language programming, C# 6 for Programmers applies the Deitel signature live-code approach to teaching programming and explores Microsoft's C# 6 and .NET in depth. Concepts are presented in the context of 170+ fully coded and tested apps, complete with syntax shading, code highlighting, code walkthroughs, program outputs and hundreds of savvy software-development tips. Start with an introduction to C# using an early classes and objects approach, then rapidly move on to more advanced topics, including LINQ, asynchronous programming with async and await and more. You'll enjoy the treatment of object-oriented programming and an object-oriented design/UML(R) ATM case study, including a complete C# implementation. When you've mastered the book, you'll be ready to start building industrial-strength, object-oriented C# apps. Paul Deitel and Harvey Deitel are the founders of Deitel & Associates, Inc., the internationally recognized programming languages authoring and corporate training organization. Millions of people worldwide have used Deitel textbooks, professional books, LiveLessons(TM) video products, e-books, resource centers and REVEL(TM) interactive multimedia courses with integrated labs and assessment to master major programming languages and platforms, including C#, C++, C, Java(TM), Android(TM) app development, iOS app development, Swift(TM), Visual Basic(R), Python(TM) and Internet and web programming. Features: Use with Windows(R) 7, 8 or 10. Integrated coverage of new C# 6 functionality: string interpolation, expression-bodied methods and properties, auto-implemented property initializers, getter-only properties, nameof, null-conditional operator, exception filters and more. Entertaining and challenging code examples. Deep treatment of classes, objects, inheritance, polymorphism and interfaces. Generics, LINQ and generic collections; PLINQ (Parallel LINQ) for multicore performance. Asynchronous programming with async and await; functional programming with lambdas, delegates and immutability. Files; relational database with LINQ to Entities. Object-oriented design ATM case study with full code implementation. Emphasis on performance and software engineering principles. Visit www.deitel.com Download code examples For Deitel's programming training courses, www.deitel.com/training or write to [email protected] Join the Deitel social networking communities: Facebook(R) at facebook.com/DeitelFan Twitter(R) at twitter.com/deitel LinkedIn(R) at bit.ly/DeitelLinkedIn YouTube(TM) at youtube.com/DeitelTV Google+(TM) at google.com/+DeitelFan Subscribe to the Deitel(R) Buzz e-mail newsletter at www.deitel.com/newsletter/subscribe.html Normal 0 false false false EN-US X-NONE X-NONE

Author(s): Paul Deitel; Harvey Deitel
Edition: 6
Publisher: Pearson
Year: 2016

Language: English
Pages: 768

Cover
Title Page
Copyright Page
Contents
Preface
Before You Begin
1 Introduction
1.1 Introduction
1.2 Object Technology: A Brief Review
1.3 C#
1.3.1 Object-Oriented Programming
1.3.2 Event-Driven Programming
1.3.3 Visual Programming
1.3.4 Generic and Functional Programming
1.3.5 An International Standard
1.3.6 C# on Non-Windows Platforms
1.3.7 Internet and Web Programming
1.3.8 Asynchronous Programming with async and await
1.4 Microsoft’s .NET
1.4.1 .NET Framework
1.4.2 Common Language Runtime
1.4.3 Platform Independence
1.4.4 Language Interoperability
1.5 Microsoft’s Windows® Operating System
1.6 Visual Studio Integrated Development Environment
1.7 Painter Test-Drive in Visual Studio Community
2 Introduction to Visual Studio and Visual Programming
2.1 Introduction
2.2 Overview of the Visual Studio Community 2015 IDE
2.2.1 Introduction to Visual Studio Community 2015
2.2.2 Visual Studio Themes
2.2.3 Links on the Start Page
2.2.4 Creating a New Project
2.2.5 New Project Dialog and Project Templates
2.2.6 Forms and Controls
2.3 Menu Bar and Toolbar
2.4 Navigating the Visual Studio IDE
2.4.1 Solution Explorer
2.4.2 Toolbox
2.4.3 Properties Window
2.5 Help Menu and Context-Sensitive Help
2.6 Visual Programming: Creating a Simple App that Displays Text and an Image
2.7 Wrap-Up
2.8 Web Resources
3 Introduction to C# App Programming
3.1 Introduction
3.2 Simple App: Displaying a Line of Text
3.2.1 Comments
3.2.2 using Directive
3.2.3 Blank Lines and Whitespace
3.2.4 Class Declaration
3.2.5 Main Method
3.2.6 Displaying a Line of Text
3.2.7 Matching Left ({) and Right (}) Braces
3.3 Creating a Simple App in Visual Studio
3.3.1 Creating the Console App
3.3.2 Changing the Name of the App File
3.3.3 Writing Code and Using IntelliSense
3.3.4 Compiling and Running the App
3.3.5 Errors, Error Messages and the Error List Window
3.4 Modifying Your Simple C# App
3.4.1 Displaying a Single Line of Text with Multiple Statements
3.4.2 Displaying Multiple Lines of Text with a Single Statement
3.5 String Interpolation
3.6 Another C# App: Adding Integers
3.6.1 Declaring the int Variable number1
3.6.2 Declaring Variables number2 and sum
3.6.3 Prompting the User for Input
3.6.4 Reading a Value into Variable number1
3.6.5 Prompting the User for Input and Reading a Value into number2
3.6.6 Summing number1 and number2
3.6.7 Displaying the sum with string Interpolation
3.6.8 Performing Calculations in Output Statements
3.7 Arithmetic
3.7.1 Arithmetic Expressions in Straight-Line Form
3.7.2 Parentheses for Grouping Subexpressions
3.7.3 Rules of Operator Precedence
3.8 Decision Making: Equality and Relational Operators
3.9 Wrap-Up
4 Introduction to Classes, Objects, Methods and strings
4.1 Introduction
4.2 Test-Driving an Account Class
4.2.1 Instantiating an Object—Keyword new
4.2.2 Calling Class Account’s GetName Method
4.2.3 Inputting a Name from the User
4.2.4 Calling Class Account’s SetName Method
4.3 Account Class with an Instance Variable and Set and Get Methods
4.3.1 Account Class Declaration
4.3.2 Keyword class and the Class Body
4.3.3 Instance Variable name of Type string
4.3.4 SetName Method
4.3.5 GetName Method
4.3.6 Access Modifiers private and public
4.3.7 Account UML Class Diagram
4.4 Creating, Compiling and Running a Visual C# Project with Two Classes
4.5 Software Engineering with Set and Get Methods
4.6 Account Class with a Property Rather Than Set and Get Methods
4.6.1 Class AccountTest Using Account’s Name Property
4.6.2 Account Class with an Instance Variable and a Property
4.6.3 Account UML Class Diagram with a Property
4.7 Auto-Implemented Properties
4.8 Account Class: Initializing Objects with Constructors
4.8.1 Declaring an Account Constructor for Custom Object Initialization
4.8.2 Class AccountTest: Initializing Account Objects When They’re Created
4.9 Account Class with a Balance; Processing Monetary Amounts
4.9.1 Account Class with a decimal balance Instance Variable
4.9.2 AccountTest Class That Uses Account Objects with Balances
4.10 Wrap-Up
5 Control Statements: Part 1
5.1 Introduction
5.2 Control Structures
5.2.1 Sequence Structure
5.2.2 Selection Statements
5.2.3 Iteration Statements
5.2.4 Summary of Control Statements
5.3 if Single-Selection Statement
5.4 if…else Double-Selection Statement
5.4.1 Nested if…else Statements
5.4.2 Dangling-else Problem
5.4.3 Blocks
5.4.4 Conditional Operator (?:)
5.5 Student Class: Nested if…else Statements
5.6 while Iteration Statement
5.7 Counter-Controlled Iteration
5.7.1 Implementing Counter-Controlled Iteration
5.7.2 Integer Division and Truncation
5.8 Sentinel-Controlled Iteration
5.8.1 Implementing Sentinel-Controlled Iteration
5.8.2 Program Logic for Sentinel-Controlled Iteration
5.8.3 Braces in a while Statement
5.8.4 Converting Between Simple Types Explicitly and Implicitly
5.8.5 Formatting Floating-Point Numbers
5.9 Nested Control Statements
5.10 Compound Assignment Operators
5.11 Increment and Decrement Operators
5.11.1 Prefix Increment vs. Postfix Increment
5.11.2 Simplifying Increment Statements
5.11.3 Operator Precedence and Associativity
5.12 Simple Types
5.13 Wrap-Up
6 Control Statements: Part 2
6.1 Introduction
6.2 Essentials of Counter-Controlled Iteration
6.3 for Iteration Statement
6.3.1 A Closer Look at the for Statement’s Header
6.3.2 General Format of a for Statement
6.3.3 Scope of a for Statement’s Control Variable
6.3.4 Expressions in a for Statement’s Header Are Optional
6.3.5 UML Activity Diagram for the for Statement
6.4 App: Summing Even Integers
6.5 App: Compound-Interest Calculations
6.5.1 Performing the Interest Calculations with Math Method pow
6.5.2 Formatting with Field Widths and Alignment
6.5.3 Caution: Do Not Use float or double for Monetary Amounts
6.6 do…while Iteration Statement
6.7 switch Multiple-Selection Statement
6.7.1 Using a switch Statement to Count A, B, C, D and F Grades
6.7.2 switch Statement UML Activity Diagram
6.7.3 Notes on the Expression in Each case of a switch
6.8 Class AutoPolicy Case Study: strings in switch Statements
6.9 break and continue Statements
6.9.1 break Statement
6.9.2 continue Statement
6.10 Logical Operators
6.10.1 Conditional AND (&&) Operator
6.10.2 Conditional OR (||) Operator
6.10.3 Short-Circuit Evaluation of Complex Conditions
6.10.4 Boolean Logical AND (&) and Boolean Logical OR (|) Operators
6.10.5 Boolean Logical Exclusive OR (^)
6.10.6 Logical Negation (!) Operator
6.10.7 Logical Operators Example
6.11 Wrap-Up
7 Methods: A Deeper Look
7.1 Introduction
7.2 Packaging Code in C#
7.3 static Methods, static Variables and Class Math
7.3.1 Math Class Methods
7.3.2 Math Class Constants PI and E
7.3.3 Why Is Main Declared static?
7.3.4 Additional Comments About Main
7.4 Methods with Multiple Parameters
7.4.1 Keyword static
7.4.2 Method Maximum
7.4.3 Assembling strings with Concatenation
7.4.4 Breaking Apart Large string Literals
7.4.5 When to Declare Variables as Fields
7.4.6 Implementing Method Maximum by Reusing Method Math.Max
7.5 Notes on Using Methods
7.6 Argument Promotion and Casting
7.6.1 Promotion Rules
7.6.2 Sometimes Explicit Casts Are Required
7.7 The .NET Framework Class Library
7.8 Case Study: Random-Number Generation
7.8.1 Creating an Object of Type Random
7.8.2 Generating a Random Integer
7.8.3 Scaling the Random-Number Range
7.8.4 Shifting Random-Number Range
7.8.5 Combining Shifting and Scaling
7.8.6 Rolling a Six-Sided Die
7.8.7 Scaling and Shifting Random Numbers
7.8.8 Repeatability for Testing and Debugging
7.9 Case Study: A Game of Chance; Introducing Enumerations
7.9.1 Method RollDice
7.9.2 Method Main’s Local Variables
7.9.3 enum Type Status
7.9.4 The First Roll
7.9.5 enum Type DiceNames
7.9.6 Underlying Type of an enum
7.9.7 Comparing Integers and enum Constants
7.10 Scope of Declarations
7.11 Method-Call Stack and Activation Records
7.11.1 Method-Call Stack
7.11.2 Stack Frames
7.11.3 Local Variables and Stack Frames
7.11.4 Stack Overflow
7.11.5 Method-Call Stack in Action
7.12 Method Overloading
7.12.1 Declaring Overloaded Methods
7.12.2 Distinguishing Between Overloaded Methods
7.12.3 Return Types of Overloaded Methods
7.13 Optional Parameters
7.14 Named Parameters
7.15 C# 6 Expression-Bodied Methods and Properties
7.16 Recursion
7.16.1 Base Cases and Recursive Calls
7.16.2 Recursive Factorial Calculations
7.16.3 Implementing Factorial Recursively
7.17 Value Types vs. Reference Types
7.18 Passing Arguments By Value and By Reference
7.18.1 ref and out Parameters
7.18.2 Demonstrating ref, out and Value Parameters
7.19 Wrap-Up
8 Arrays; Introduction to Exception Handling
8.1 Introduction
8.2 Arrays
8.3 Declaring and Creating Arrays
8.4 Examples Using Arrays
8.4.1 Creating and Initializing an Array
8.4.2 Using an Array Initializer
8.4.3 Calculating a Value to Store in Each Array Element
8.4.4 Summing the Elements of an Array
8.4.5 Iterating Through Arrays with foreach
8.4.6 Using Bar Charts to Display Array Data Graphically; Introducing Type Inference with var
8.4.7 Using the Elements of an Array as Counters
8.5 Using Arrays to Analyze Survey Results; Intro to Exception Handling
8.5.1 Summarizing the Results
8.5.2 Exception Handling: Processing the Incorrect Response
8.5.3 The try Statement
8.5.4 Executing the catch Block
8.5.5 Message Property of the Exception Parameter
8.6 Case Study: Card Shuffling and Dealing Simulation
8.6.1 Class Card and Getter-Only Auto-Implemented Properties
8.6.2 Class DeckOfCards
8.6.3 Shuffling and Dealing Cards
8.7 Passing Arrays and Array Elements to Methods
8.8 Case Study: GradeBook Using an Array to Store Grades
8.9 Multidimensional Arrays
8.9.1 Rectangular Arrays
8.9.2 Jagged Arrays
8.9.3 Two-Dimensional Array Example: Displaying Element Values
8.10 Case Study: GradeBook Using a Rectangular Array
8.11 Variable-Length Argument Lists
8.12 Using Command-Line Arguments
8.13 (Optional) Passing Arrays by Value and by Reference
8.14 Wrap-Up
9 Introduction to LINQ and the List Collection
9.1 Introduction
9.2 Querying an Array of int Values Using LINQ
9.2.1 The from Clause
9.2.2 The where Clause
9.2.3 The select Clause
9.2.4 Iterating Through the Results of the LINQ Query
9.2.5 The orderby Clause
9.2.6 Interface IEnumerable
9.3 Querying an Array of Employee Objects Using LINQ
9.3.1 Accessing the Properties of a LINQ Query’s Range Variable
9.3.2 Sorting a LINQ Query’s Results by Multiple Properties
9.3.3 Any, First and Count Extension Methods
9.3.4 Selecting a Property of an Object
9.3.5 Creating New Types in the select Clause of a LINQ Query
9.4 Introduction to Collections
9.4.1 List Collection
9.4.2 Dynamically Resizing a List Collection
9.5 Querying the Generic List Collection Using LINQ
9.5.1 The let Clause
9.5.2 Deferred Execution
9.5.3 Extension Methods ToArray and ToList
9.5.4 Collection Initializers
9.6 Wrap-Up
9.7 Deitel LINQ Resource Center
10 Classes and Objects: A Deeper Look
10.1 Introduction
10.2 Time Class Case Study; Throwing Exceptions
10.2.1 Time1 Class Declaration
10.2.2 Using Class Time1
10.3 Controlling Access to Members
10.4 Referring to the Current Object’s Members with the this Reference
10.5 Time Class Case Study: Overloaded Constructors
10.5.1 Class Time2 with Overloaded Constructors
10.5.2 Using Class Time2’s Overloaded Constructors
10.6 Default and Parameterless Constructors
10.7 Composition
10.7.1 Class Date
10.7.2 Class Employee
10.7.3 Class EmployeeTest
10.8 Garbage Collection and Destructors
10.9 static Class Members
10.10 readonly Instance Variables
10.11 Class View and Object Browser
10.11.1 Using the Class View Window
10.11.2 Using the Object Browser
10.12 Object Initializers
10.13 Operator Overloading; Introducing struct
10.13.1 Creating Value Types with struct
10.13.2 Value Type ComplexNumber
10.13.3 Class ComplexTest
10.14 Time Class Case Study: Extension Methods
10.15 Wrap-Up
11 Object-Oriented Programming: Inheritance
11.1 Introduction
11.2 Base Classes and Derived Classes
11.3 protected Members
11.4 Relationship between Base Classes and Derived Classes
11.4.1 Creating and Using a CommissionEmployee Class
11.4.2 Creating a BasePlusCommissionEmployee Class without Using Inheritance
11.4.3 Creating a CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy
11.4.4 CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy Using protected Instance Variables
11.4.5 CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy Using private Instance Variables
11.5 Constructors in Derived Classes
11.6 Software Engineering with Inheritance
11.7 Class object
11.8 Wrap-Up
12 OOP: Polymorphism and Interfaces
12.1 Introduction
12.2 Polymorphism Examples
12.3 Demonstrating Polymorphic Behavior
12.4 Abstract Classes and Methods
12.5 Case Study: Payroll System Using Polymorphism
12.5.1 Creating Abstract Base Class Employee
12.5.2 Creating Concrete Derived Class SalariedEmployee
12.5.3 Creating Concrete Derived Class HourlyEmployee
12.5.4 Creating Concrete Derived Class CommissionEmployee
12.5.5 Creating Indirect Concrete Derived Class BasePlusCommissionEmployee
12.5.6 Polymorphic Processing, Operator is and Downcasting
12.5.7 Summary of the Allowed Assignments Between Base-Class and Derived-Class Variables
12.6 sealed Methods and Classes
12.7 Case Study: Creating and Using Interfaces
12.7.1 Developing an IPayable Hierarchy
12.7.2 Declaring Interface IPayable
12.7.3 Creating Class Invoice
12.7.4 Modifying Class Employee to Implement Interface IPayable
12.7.5 Using Interface IPayable to Process Invoices and Employees Polymorphically
12.7.6 Common Interfaces of the .NET Framework Class Library
12.8 Wrap-Up
13 Exception Handling: A Deeper Look
13.1 Introduction
13.2 Example: Divide by Zero without Exception Handling
13.2.1 Dividing By Zero
13.2.2 Enter a Non-Numeric Denominator
13.2.3 Unhandled Exceptions Terminate the App
13.3 Example: Handling DivideByZeroExceptions and FormatExceptions
13.3.1 Enclosing Code in a try Block
13.3.2 Catching Exceptions
13.3.3 Uncaught Exceptions
13.3.4 Termination Model of Exception Handling
13.3.5 Flow of Control When Exceptions Occur
13.4 .NET Exception Hierarchy
13.4.1 Class SystemException
13.4.2 Which Exceptions Might a Method Throw?
13.5 finally Block
13.5.1 Moving Resource-Release Code to a finally Block
13.5.2 Demonstrating the finally Block
13.5.3 Throwing Exceptions Using the throw Statement
13.5.4 Rethrowing Exceptions
13.5.5 Returning After a finally Block
13.6 The using Statement
13.7 Exception Properties
13.7.1 Property InnerException
13.7.2 Other Exception Properties
13.7.3 Demonstrating Exception Properties and Stack Unwinding
13.7.4 Throwing an Exception with an InnerException
13.7.5 Displaying Information About the Exception
13.8 User-Defined Exception Classes
13.9 Checking for null References; Introducing C# 6’s ?. Operator
13.9.1 Null-Conditional Operator (?.)
13.9.2 Revisiting Operators is and as
13.9.3 Nullable Types
13.9.4 Null Coalescing Operator (??)
13.10 Exception Filters and the C# 6 when Clause
13.11 Wrap-Up
14 Graphical User Interfaces with Windows Forms: Part 1
14.1 Introduction
14.2 Windows Forms
14.3 Event Handling
14.3.1 A Simple Event-Driven GUI
14.3.2 Auto-Generated GUI Code
14.3.3 Delegates and the Event-Handling Mechanism
14.3.4 Another Way to Create Event Handlers
14.3.5 Locating Event Information
14.4 Control Properties and Layout
14.4.1 Anchoring and Docking
14.4.2 Using Visual Studio To Edit a GUI’s Layout
14.5 Labels, TextBoxes and Buttons
14.6 GroupBoxes and Panels
14.7 CheckBoxes and RadioButtons
14.7.1 CheckBoxes
14.7.2 Combining Font Styles with Bitwise Operators
14.7.3 RadioButtons
14.8 PictureBoxes
14.9 ToolTips
14.10 NumericUpDown Control
14.11 Mouse-Event Handling
14.12 Keyboard-Event Handling
14.13 Wrap-Up
15 Graphical User Interfaces with Windows Forms: Part 2
15.1 Introduction
15.2 Menus
15.3 MonthCalendar Control
15.4 DateTimePicker Control
15.5 LinkLabel Control
15.6 ListBox Control
15.7 CheckedListBox Control
15.8 ComboBox Control
15.9 TreeView Control
15.10 ListView Control
15.11 TabControl Control
15.12 Multiple Document Interface (MDI) Windows
15.13 Visual Inheritance
15.14 User-Defined Controls
15.15 Wrap-Up
16 Strings and Characters: A Deeper Look
16.1 Introduction
16.2 Fundamentals of Characters and Strings
16.3 string Constructors
16.4 string Indexer, Length Property and CopyTo Method
16.5 Comparing strings
16.6 Locating Characters and Substrings in strings
16.7 Extracting Substrings from strings
16.8 Concatenating strings
16.9 Miscellaneous string Methods
16.10 Class StringBuilder
16.11 Length and Capacity Properties, EnsureCapacity Method and Indexer of Class StringBuilder
16.12 Append and AppendFormat Methods of Class StringBuilder
16.13 Insert, Remove and Replace Methods of Class StringBuilder
16.14 Char Methods
16.15 Introduction to Regular Expressions (Online)
16.16 Wrap-Up
17 Files and Streams
17.1 Introduction
17.2 Files and Streams
17.3 Creating a Sequential-Access Text File
17.4 Reading Data from a Sequential-Access Text File
17.5 Case Study: Credit-Inquiry Program
17.6 Serialization
17.7 Creating a Sequential-Access File Using Object Serialization
17.8 Reading and Deserializing Data from a Binary File
17.9 Classes File and Directory
17.9.1 Demonstrating Classes File and Directory
17.9.2 Searching Directories with LINQ
17.10 Wrap-Up
18 Generics
18.1 Introduction
18.2 Motivation for Generic Methods
18.3 Generic-Method Implementation
18.4 Type Constraints
18.4.1 IComparable Interface
18.4.2 Specifying Type Constraints
18.5 Overloading Generic Methods
18.6 Generic Classes
18.7 Wrap-Up
19 Generic Collections; Functional Programming with LINQ/PLINQ
19.1 Introduction
19.2 Collections Overview
19.3 Class Array and Enumerators
19.3.1 C# 6 using static Directive
19.3.2 Class UsingArray’s static Fields
19.3.3 Array Method Sort
19.3.4 Array Method Copy
19.3.5 Array Method BinarySearch
19.3.6 Array Method GetEnumerator and Interface IEnumerator
19.3.7 Iterating Over a Collection with foreach
19.3.8 Array Methods Clear, IndexOf, LastIndexOf and Reverse
19.4 Dictionary Collections
19.4.1 Dictionary Fundamentals
19.4.2 Using the SortedDictionary Collection
19.5 Generic LinkedList Collection
19.6 C# 6 Null Conditional Operator ? []
19.7 C# 6 Dictionary Initializers and Collection Initializers
19.8 Delegates
19.8.1 Declaring a Delegate Type
19.8.2 Declaring a Delegate Variable
19.8.3 Delegate Parameters
19.8.4 Passing a Method Name Directly to a Delegate Parameter
19.9 Lambda Expressions
19.9.1 Expression Lambdas
19.9.2 Assigning Lambdas to Delegate Variables
19.9.3 Explicitly Typed Lambda Parameters
19.9.4 Statement Lambdas
19.10 Introduction to Functional Programming
19.11 Functional Programming with LINQ Method-Call Syntax and Lambdas
19.11.1 LINQ Extension Methods Min, Max, Sum and Average
19.11.2 Aggregate Extension Method for Reduction Operations
19.11.3 The Where Extension Method for Filtering Operations
19.11.4 Select Extension Method for Mapping Operations
19.12 PLINQ: Improving LINQ to Objects Performance with Multicore
19.13 (Optional) Covariance and Contravariance for Generic Types
19.14 Wrap-Up
20 Databases and LINQ
20.1 Introduction
20.2 Relational Databases
20.3 A Books Database
20.4 LINQ to Entities and the ADO.NET Entity Framework
20.5 Querying a Database with LINQ
20.5.1 Creating the ADO.NET Entity Data Model Class Library
20.5.2 Creating a Windows Forms Project and Configuring It to Use the Entity Data Model
20.5.3 Data Bindings Between Controls and the Entity Data Model
20.6 Dynamically Binding Query Results
20.6.1 Creating the Display Query Results GUI
20.6.2 Coding the Display Query Results App
20.7 Retrieving Data from Multiple Tables with LINQ
20.8 Creating a Master/Detail View App
20.8.1 Creating the Master/Detail GUI
20.8.2 Coding the Master/Detail App
20.9 Address Book Case Study
20.9.1 Creating the Address Book App’s GUI
20.9.2 Coding the Address Book App
20.10 Tools and Web Resources
20.11 Wrap-Up
21 Asynchronous Programming with async and await
21.1 Introduction
21.2 Basics of async and await
21.2.1 async Modifier
21.2.2 await Expression
21.2.3 async, await and Threads
21.3 Executing an Asynchronous Task from a GUI App
21.3.1 Performing a Task Asynchronously
21.3.2 Method calculateButton_Click
21.3.3 Task Method Run: Executing Asynchronously in a Separate Thread
21.3.4 awaiting the Result
21.3.5 Calculating the Next Fibonacci Value Synchronously
21.4 Sequential Execution of Two Compute-Intensive Tasks
21.5 Asynchronous Execution of Two Compute-Intensive Tasks
21.5.1 awaiting Multiple Tasks with Task Method WhenAll
21.5.2 Method StartFibonacci
21.5.3 Modifying a GUI from a Separate Thread
21.5.4 awaiting One of Several Tasks with Task Method WhenAny
21.6 Invoking a Flickr Web Service Asynchronously with HttpClient
21.6.1 Using Class HttpClient to Invoke a Web Service
21.6.2 Invoking the Flickr Web Service’s flickr.photos.search Method
21.6.3 Processing the XML Response
21.6.4 Binding the Photo Titles to the ListBox
21.6.5 Asynchronously Downloading an Image’s Bytes
21.7 Displaying an Asynchronous Task’s Progress
21.8 Wrap-Up
A: Operator Precedence Chart
B: Simple Types
C: ASCII Character Set
Index
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z