Part I: Introducing Microsoft Visual C# and Microsoft Visual Studio 2008
1 Welcome to C# 3
Beginning Programming with the Visual Studio 2008 Environment
Writing Your First Program
Using Namespaces
Creating a Graphical Application
Chapter 1 Quick Reference
2 Working with Variables, Operators, and Expressions
Understanding Statements
Using Identifiers
Identifying Keywords
Using Variables
Naming Variables
Declaring Variables
Working with Primitive Data Types
Displaying Primitive Data Type Values
Using Arithmetic Operators
Operators and Types
Examining Arithmetic Operators
Controlling Precedence
Using Associativity to Evaluate Expressions
Associativity and the Assignment Operator
Incrementing and Decrementing Variables
Prefix and Postfix
Declaring Implicitly Typed Local Variables
Chapter 2 Quick Reference
3 Writing Methods and Applying Scope
Declaring Methods
Specifying the Method Declaration Syntax
Writing return Statements
Calling Methods
Specifying the Method Call Syntax
Applying Scope
Defining Local Scope
Defining Class Scope
Overloading Methods
Writing Methods
Chapter 3 Quick Reference
4 Using Decision Statements
Declaring Boolean Variables
Using Boolean Operators
Understanding Equality and Relational Operators
Understanding Conditional Logical Operators
Summarizing Operator Precedence and Associativity
Using if Statements to Make Decisions
Understanding if Statement Syntax
Using Blocks to Group Statements
Cascading if Statements
Using switch Statements 78
Understanding switch Statement Syntax
Following the switch Statement Rules
Chapter 4 Quick Reference
5 Using Compound Assignment and Iteration Statements
Using Compound Assignment Operators
Writing while Statements
Writing for Statements
Understanding for Statement Scope
Writing do Statements
Chapter 5 Quick Reference
6 Managing Errors and Exceptions
Coping with Errors
Trying Code and Catching Exceptions
Handling an Exception
Using Multiple catch Handlers 106
Catching Multiple Exceptions
Using Checked and Unchecked Integer Arithmetic
Writing Checked Statements
Writing Checked Expressions
Throwing Exceptions
Using a finally Block 118
Chapter 6 Quick Reference
Part II: Understanding the C# Language
7 Creating and Managing Classes and Objects
Understanding Classification
The Purpose of Encapsulation
Defining and Using a Class
Controlling Accessibility
Working with Constructors
Overloading Constructors
Understanding static Methods and Data
Creating a Shared Field
Creating a static Field by Using the const Keyword
Chapter 7 Quick Reference
8 Understanding Values and References
Copying Value Type Variables and Classes
Understanding Null Values and Nullable Types
Using Nullable Types
Understanding the Properties of Nullable Types
Using ref and out Parameters
Creating ref Parameters
Creating out Parameters
How Computer Memory Is Organized
Using the Stack and the Heap
The System.Object Class
Boxing
Unboxing
Casting Data Safely
The is Operator
The as Operator
Chapter 8 Quick Reference
9 Creating Value Types with Enumerations and Structures
Working with Enumerations
Declaring an Enumeration
Using an Enumeration
Choosing Enumeration Literal Values
Choosing an Enumeration's Underlying Type
Working with Structures
Declaring a Structure
Understanding Structure and Class Differences
Declaring Structure Variables
Understanding Structure Initialization
Copying Structure Variables
Chapter 9 Quick Reference
10 Using Arrays and Collections
What Is an Array?
Declaring Array Variables
Creating an Array Instance
Initializing Array Variables
Creating an Implicitly Typed Array
Accessing an Individual Array Element
Iterating Through an Array
Copying Arrays
What Are Collection Classes?
The ArrayList Collection Class
The Queue Collection Class
The Stack Collection Class
The Hashtable Collection Class
The SortedList Collection Class Using Collection Initializers
Comparing Arrays and Collections
Using Collection Classes to Play Cards
Chapter 10 Quick Reference
11 Understanding Parameter Arrays
Using Array Arguments
Declaring a params Array
Using params object[ ]
Using a params Array
Chapter 11 Quick Reference
12 Working with Inheritance
What Is Inheritance?
Using Inheritance
Base Classes and Derived Classes
Calling Base Class Constructors
Assigning Classes
Declaring new Methods
Declaring Virtual Methods
Declaring override Methods
Understandingprotected Access
Understanding Extension Methods
Chapter 12 Quick Reference
13 Creating Interfaces and Defining Abstract Classes
Understanding Interfaces
Interface Syntax
Interface Restrictions
Implementing an Interface
Referencing a Class Through Its Interface
Working with Multiple Interfaces
Abstract Classes
Abstract Methods
Sealed Classes
Sealed Methods
Implementing an Extensible Framework
Summarizing Keyword Combinations
Chapter 13 Quick Reference
14 Using Garbage Collection and Resource Management
The Life and Times of an Object
Writing Destructors
Why Use the Garbage Collector?
How Does the Garbage Collector Work?
Recommendations
Resource Management
Disposal Methods
Exception-Safe Disposal
The using Statement
Calling the Dispose Method from a Destructor
Making Code Exception-Safe
Chapter 14 Quick Reference
Part III: Creating Components
15 Implementing Properties to Access Fields
Implementing Encapsulation by Using Methods
What Are Properties?
Using Properties
Read-Only Properties
Write-Only Properties
Property Accessibility
Understanding the Property Restrictions
Declaring Interface Properties
Using Properties in a Windows Application
Generating Automatic Properties
Initializing Objects by Using Properties
Chapter 15 Quick Reference
16 Using Indexers
What Is an Indexer?
An Example That Doesn't Use Indexers
The Same Example Using Indexers
Understanding Indexer Accessors
Comparing Indexers and Arrays
Indexers in Interfaces
Using Indexers in a Windows Application
Chapter 16 Quick Reference
17 Interrupting Program Flow and Handling Events
Declaring and Using Delegates
The Automated Factory Scenario
Implementing the Factory Without Using Delegates
Implementing the Factory by Using a Delegate
Using Delegates
Lambda Expressions and Delegates
Creating a Method Adapter
Using a Lambda Expression as an Adapter
The Form of Lambda Expressions
Enabling Notifications with Events
Declaring an Event
Subscribing to an Event
Unsubscribing from an Event
Raising an Event
Understanding WPF User Interface Events
Using Events
Chapter 17 Quick Reference
18 Introducing Generics
The Problem with objects
The Generics Solution
Generics vs Generalized Classes
Generics and Constraints
Creating a Generic Class
The Theory of Binary Trees
Building a Binary Tree Class by Using Generics
Creating a Generic Method
Defining a Generic Method to Build a Binary Tree
Chapter 18 Quick Reference
19 Enumerating Collections
Enumerating the Elements in a Collection
Manually Implementing an Enumerator
Implementing the IEnumerable Interface
Implementing an Enumerator by Using an Iterator
A Simple Iterator
Defining an Enumerator for the Tree<TItem> Class by Using an Iterator
Chapter 19 Quick Reference
20 Querying In-Memory Data by Using Query Expressions
What Is Language Integrated Query (LINQ)?
Using LINQ in a C# Application2
Selecting Data
Filtering Data
Ordering, Grouping, and Aggregating Data
Joining Data
Using Query Operators
Querying Data in Tree<TItem> Objects
LINQ and Deferred Evaluation
Chapter 20 Quick Reference
21 Operator Overloading
Understanding Operators
Operator Constraints
Overloaded Operators
Creating Symmetric Operators
Understanding Compound Assignment
Declaring Increment and Decrement Operators
Defining Operator Pairs
Implementing an Operator
Understanding Conversion Operators
Providing Built-In Conversions
Implementing User-Defined Conversion Operators
Creating Symmetric Operators, Revisited
Adding an Implicit Conversion Operator
Chapter 21 Quick Reference
Part IV: Working with Windows Applications
22 Introducing Windows Presentation Foundation
Creating a WPF Application
Creating a Windows Presentation Foundation Application
Adding Controls to the Form
Using WPF Controls
Changing Properties Dynamically
Handling Events in a WPF Form
Processing Events in Windows Forms
Chapter 22 Quick Reference
23 Working with Menus and Dialog Boxes
Menu Guidelines and Style
Menus and Menu Events
Creating a Menu
Handling Menu Events
Shortcut Menus
Creating Shortcut Menus
Windows Common Dialog Boxes
Using the SaveFileDialog Class
Chapter 23 Quick Reference
24 Performing Validation
Validating Data
Strategies for Validating User Input
An Example Customer Information Maintenance
Performing Validation by Using Data Binding
Changing the Point at Which Validation Occurs
Chapter 24 Quick Reference
Part V: Managing Data
25 Querying Information in a Database
Querying a Database by Using ADO NET
The Northwind Database
Creating the Database
Using ADO NET to Query Order Information
Querying a Database by Using DLINQ
Defining an Entity Class
Creating and Running a DLINQ Query
Deferred and Immediate Fetching
Joining Tables and Creating Relationships
Deferred and Immediate Fetching Revisited
Defining a Custom DataContext Class
Using DLINQ to Query Order Information
Chapter 25 Quick Reference
26 Displaying and Editing Data by Using Data Binding
Using Data Binding with DLINQ
Using DLINQ to Modify Data
Updating Existing Data
Handling Conflicting Updates
Adding and Deleting Data
Chapter 26 Quick Reference
Part VI: Building Web Applications
27 Introducing ASP NET
Understanding the Internet as an Infrastructure
Understanding Web Server Requests and Responses
Managing State
Understanding ASP NET
Creating Web Applications with ASP NET
Building an ASP NET Application
Understanding Server Controls
Creating and Using a Theme
Chapter 27 Quick Reference
28 Understanding Web Forms Validation Controls
Comparing Server and Client Validations
Validating Data at the Web Server
Validating Data in the Web Browser
Implementing Client Validation
Chapter 28 Quick Reference
29 Protecting a Web Site and Accessing Data with Web Forms
Managing Security
Understanding Forms-Based Security
Implementing Forms-Based Security
Querying and Displaying Data
Understanding the Web Forms GridView Control
Displaying Customer and Order History Information
Paging Data
Editing Data
Updating Rows Through a GridView Control
Navigating Between Forms
Chapter 29 Quick Reference
30 Creating and Using a Web Service
What Is a Web Service?
The Role of SOAP
What Is the Web Services Description Language?
Nonfunctional Requirements of Web Services
The Role of Windows Communication Foundation
Building a Web Service
Creating the ProductsService Web Service
Web Services, Clients, and Proxies
Talking SOAP: The Difficult Way
Talking SOAP: The Easy Way
Consuming the ProductsService Web Service
Chapter 30 Quick Reference
Index