| About the Authors | p. xi |
| About the Technical Reviewers | p. xiii |
| Acknowledgments | p. xv |
| Introduction | p. xvii |
| VB 2008 Overview | p. 1 |
| Differences Between VB 2008, C# 3.0, and VB6 | p. 1 |
| CLR Garbage Collection | p. 3 |
| Common Type System | p. 3 |
| A Simple VB 2008 Program | p. 5 |
| What's New in VB 2008 | p. 5 |
| Summary | p. 10 |
| VB 2008 Syntax | p. 11 |
| Types and Variables | p. 11 |
| Namespaces | p. 25 |
| Statements | p. 29 |
| Control Flow Constructs | p. 29 |
| Iteration and Looping Constructs | p. 31 |
| Summary | p. 33 |
| Classes and Structures | p. 35 |
| Class Definitions | p. 35 |
| Value Type Definitions | p. 48 |
| Boxing and Unboxing | p. 52 |
| System.Object | p. 57 |
| Creating Objects | p. 58 |
| Destroying Objects | p. 62 |
| Disposable Objects | p. 63 |
| Summary | p. 67 |
| Methods, Properties, and Fields | p. 69 |
| Methods | p. 69 |
| Properties | p. 77 |
| Fields | p. 80 |
| Summary | p. 84 |
| VB 2008 and the CLR | p. 85 |
| From VB to IL | p. 85 |
| From IL to Platform | p. 87 |
| Understanding Assemblies | p. 88 |
| Metadata | p. 95 |
| Summary | p. 96 |
| Interfaces | p. 97 |
| Interfaces Are Reference Types | p. 97 |
| Defining Interfaces | p. 98 |
| Implementing Interfaces in Structures | p. 103 |
| Using Generics with Interfaces | p. 105 |
| Contracts | p. 107 |
| Choosing Between Interfaces and Classes | p. 110 |
| Polymorphism with Interfaces | p. 114 |
| Summary | p. 115 |
| Operator Overloading | p. 117 |
| Just Because You Can Doesn't Mean You Should | p. 117 |
| Operators That Can Be Overloaded | p. 117 |
| Types and Formats of Overloaded Operators | p. 118 |
| Operators Shouldn't Mutate Their Operands | p. 119 |
| Does Parameter Order Matter? | p. 120 |
| Overloading the Addition Operator | p. 121 |
| Comparison Operators | p. 122 |
| Conversion Operators | p. 129 |
| Summary | p. 132 |
| Exception Handling | p. 133 |
| Handling Exceptions | p. 133 |
| Avoid Using Exceptions to Control Flow | p. 134 |
| Mechanics of Handling Exceptions in VB 2008 | p. 134 |
| Achieving Exception Neutrality | p. 143 |
| Creating Custom Exception Classes | p. 155 |
| Working with Allocated Resources and Exceptions | p. 158 |
| Providing Rollback Behavior | p. 162 |
| Summary | p. 165 |
| Working with Strings | p. 167 |
| String Overview | p. 167 |
| String Literals | p. 168 |
| Format Specifiers and Globalization | p. 169 |
| Working with Strings from Outside Sources | p. 181 |
| StringBuilder | p. 184 |
| Searching Strings with Regular Expressions | p. 185 |
| Summary | p. 196 |
| Arrays and Collections | p. 197 |
| Introduction to Arrays | p. 197 |
| Multidimensional Arrays | p. 200 |
| Multidimensional Jagged Arrays | p. 202 |
| Collection Types | p. 203 |
| How Iteration Works | p. 211 |
| Summary | p. 215 |
| Delegates and Events | p. 217 |
| Overview of Delegates | p. 217 |
| Delegate Creation and Use | p. 218 |
| Events | p. 229 |
| Summary | p. 235 |
| Generics | p. 237 |
| Introduction to Generics | p. 237 |
| Generic Type Definitions and Constructed Types | p. 240 |
| Constraints | p. 251 |
| Generic System Collections | p. 255 |
| Select Problems and Solutions | p. 257 |
| Summary | p. 270 |
| Threading | p. 271 |
| Threading in VB 2008 and .NET 3.5 | p. 271 |
| Synchronizing Threads | p. 285 |
| Using the Thread Pool | p. 309 |
| Summary | p. 316 |
| VB 2008 Best Practices | p. 317 |
| Reference-Type Best Practices | p. 317 |
| Value-Type Best Practices | p. 362 |
| Summary | p. 372 |
| LINQ with VB 2008 | p. 373 |
| LINQ Overview | p. 373 |
| LINQ to Objects | p. 379 |
| LINQ to XML | p. 389 |
| LINQ to SQL | p. 405 |
| Summary | p. 416 |
| Resources | p. 417 |
| Books | p. 417 |
| Articles | p. 418 |
| Web | p. 418 |
| Running the Examples | p. 421 |
| Example Types | p. 421 |
| A Few Words Regarding Modules | p. 422 |
| Index | p. 423 |
| Table of Contents provided by Ingram. All Rights Reserved. |