| Acknowledgments | p. xi |
| Introduction | p. xiii |
| An Introduction to the .NET Framework and VB.NET | p. 1 |
| Casting the .NET | p. 2 |
| Divide and Rule | p. 5 |
| The First COMing | p. 6 |
| The Elements of COM | p. 8 |
| COM Unbecoming | p. 11 |
| The Second COMing | p. 12 |
| What Is the .NET Framework? | p. 13 |
| The Common Type System | p. 13 |
| Why .NET Is Better | p. 14 |
| Is .NET Another Java? | p. 15 |
| Why .NET Depends of Visual Basic | p. 17 |
| The Legacy of Visual Basic | p. 17 |
| Don't Mind Us: We're Making Moolah | p. 18 |
| Componentware Arrives with OLE and COM | p. 19 |
| Death of a C++ Programmer | p. 20 |
| The Legacy of ASP | p. 20 |
| And the VB Machine Rolls On | p. 21 |
| And then Along Came a Cpider? | p. 21 |
| Entering VB Nirvana | p. 23 |
| True Object Orientation | p. 23 |
| Structured Exception Handling | p. 26 |
| Delegates | p. 27 |
| Interfaces | p. 27 |
| Multithreading | p. 27 |
| Managed Execution | p. 28 |
| ADO.NET | p. 29 |
| ASP.NET | p. 29 |
| Observations | p. 30 |
| Introduction to the Common Language Runtime | p. 33 |
| The CLR Is More, by Far | p. 34 |
| A Hosted Execution Environment | p. 35 |
| An Execution Manager | p. 36 |
| Assembly Basics | p. 37 |
| Assemblies Exposed | p. 41 |
| The Elements of the Assembly | p. 42 |
| Generating MSIL | p. 43 |
| The Common Language Specification | p. 44 |
| Language Interoperability | p. 44 |
| Metadata | p. 46 |
| Down to Executable Code | p. 48 |
| "JIT'er" Bugs Beware | p. 48 |
| Managed Execution | p. 49 |
| Side-by-Side Execution | p. 49 |
| Application Domains | p. 50 |
| Garbage Collection | p. 51 |
| The .NET Security Model | p. 53 |
| Just-in-Time (for Tea) Deployment | p. 54 |
| Observations | p. 56 |
| VB.NET Building Blocks | p. 57 |
| Let the Mission Begin | p. 58 |
| Goodbye World, Hello VB.NET | p. 60 |
| Option Compare, Explicit, and Strict | p. 63 |
| Data Type Conversion | p. 63 |
| VB.NET Operators | p. 64 |
| The Value of True Is--1 | p. 64 |
| Operator Precedence | p. 65 |
| Unary Operators | p. 66 |
| Assignment Operators | p. 66 |
| Relational Operators | p. 67 |
| Concatenation Operator | p. 69 |
| Bitwise Operators | p. 69 |
| Arithmetic Operators | p. 70 |
| Execution Control Statements | p. 71 |
| Branching | p. 71 |
| Decision-making and Switches | p. 73 |
| Iteration Statements | p. 76 |
| Do...Loop | p. 76 |
| For...Next | p. 77 |
| For Each...Next | p. 78 |
| While | p. 78 |
| Arrays | p. 79 |
| Declaring and Initializing Arrays | p. 79 |
| Working with Arrays | p. 80 |
| Working with the Array's Upper Boundary | p. 82 |
| The Erase Statement | p. 84 |
| The IsArray Function | p. 85 |
| Collections | p. 85 |
| The Collections Namespace | p. 86 |
| Strings | p. 87 |
| Working with Strings | p. 88 |
| The Methods of System.String | p. 88 |
| Methods | p. 104 |
| Sub-procedures and Functions | p. 106 |
| Observations | p. 106 |
| Object-Oriented Software Development Using VB.NET | p. 107 |
| Types | p. 109 |
| The .NET Value Type Reference Model | p. 109 |
| The .NET Object Reference Model | p. 110 |
| Inheritance, Encapsulation, and Polymorphism in VB.NET | p. 114 |
| Inheritance | p. 114 |
| Encapsulation | p. 119 |
| Polymorphism | p. 121 |
| A "Real-World" Scenario | p. 123 |
| Designing the Application | p. 124 |
| Modeling | p. 125 |
| Creating Classes | p. 127 |
| Class Visibility and Role | p. 128 |
| Encapsulation at Work | p. 128 |
| Creating a Class Others Can Use | p. 129 |
| Inheritance at Work | p. 132 |
| Implementation in the Parent Class | p. 134 |
| Adding the Methods | p. 134 |
| Object-Oriented Development at Work | p. 138 |
| Inheriting the Implementation | p. 138 |
| Using the Classes | p. 141 |
| Instantiation | p. 143 |
| Observations | p. 145 |
| VB.NET in Action | p. 147 |
| .NET Exception Handling | p. 148 |
| The Exception Handler | p. 151 |
| Exit Try and Finally | p. 153 |
| Nesting Exception Handlers | p. 154 |
| Creating Your Own Exception Classes | p. 155 |
| Extending the Base Class | p. 157 |
| Object Serialization and .NET I/O | p. 160 |
| Serialization Part I | p. 162 |
| I/O Support in .NET | p. 163 |
| Serialization Part II | p. 167 |
| Serialization Part III | p. 170 |
| ADO.NET | p. 173 |
| ADO Revisited | p. 173 |
| Enter ADO.NET | p. 174 |
| Connection Architecture | p. 176 |
| XML | p. 177 |
| Implementing Database Integration with ADO.NET | p. 178 |
| Interfaces | p. 180 |
| Forms | p. 182 |
| Windows Forms and Web Forms | p. 184 |
| The Graphical Login | p. 185 |
| ASP.NET | p. 187 |
| ASP.NET in Action | p. 188 |
| Creating a Simple Web Service | p. 191 |
| Observations | p. 194 |
| Migration to and Interoperability of VB.NET | p. 195 |
| Protecting Your Investment in Existing Code | p. 197 |
| Stay in Classic VB | p. 198 |
| Migrate Code to VB.NET | p. 198 |
| Rewrite | p. 199 |
| Is It Worth Porting? | p. 201 |
| Using the Visual Basic Upgrade Wizard | p. 202 |
| Understanding the Upgrade Process | p. 203 |
| Upgrading COM and COM+ Services Using the Wizard | p. 206 |
| Upgrade Tools for Interop | p. 206 |
| Accessing COM Components from VB.NET Clients | p. 207 |
| Using the TLBIMP Utility | p. 208 |
| Calling .NET Objects form COM or Standard VB Clients | p. 209 |
| Understanding Object Lifetime and Deterministic Finalization | p. 211 |
| Moving from ASP to ASP.NET | p. 211 |
| Observations | p. 212 |
| Making the Move to VB.NET | p. 213 |
| What Makes a Software Development Language | p. 214 |
| The Way It Was | p. 216 |
| The Way It Is | p. 216 |
| Syntax and Idioms | p. 217 |
| Managed Execution, Managed Code ... and Java | p. 219 |
| User Interfaces | p. 220 |
| VB.NET: The Best RAD Tool | p. 220 |
| Late Binding | p. 220 |
| VB.NET With Blocks | p. 221 |
| Market Demand | p. 222 |
| Observations | p. 223 |
| Index | p. 225 |
| Table of Contents provided by Syndetics. All Rights Reserved. |