All the languages support structured exception handling and powerful ways to view and alter your data at runtime. In recent years, programming for Windows has become a pleasurable process. At a slightly higher level, Visual Basic programmers could buy controls to drop onto Windows forms and create applications even if they didn't understand exactly how these operations occurred. I've met many VB programmers who have never used classes in their applications and don't see any reason to do so. The burden of change falls most heavily on Visual Basic programmers.
Arrays are subclasses in the System class hierarchy and are all zero-based.
Operator overloading has subsumed optional parameters, and the Set, Let, and Get statements have disappeared. The pain of learning the class libraries, the new syntax, and the OOP paradigm is more than offset by the huge increase in power that .NET offers. Visual Basic programmers have complete and equal access to the .NET class library, so operations that used to be difficult and required a complex mastery of API calls are now as much a part of the language as controls or error handling. For example, you can create a bitmap, draw text on it, display it on a form, or print it with straightforward function calls. The .NET framework provides increased power and RAD tools for creating Windows applications, and also extends that power so you can create Web applications easily.