the Class Name drop down list and then select a method from the Declarations drop down list to have the Method signature automatically inserted Auto-wireup of events. VB.NET has the Handles syntax for events, which connects event handlers to object variables rather than to objects. Firing of events is done with the RaiseEvent keyword, giving the IDE the chance to show a list of available events to pick from. RaiseEvent implicitly checks if there are any event handlers wired up. (in C# raising an event is syntactically identical to calling a procedure, and it requires an additional line of code to check for wired event handlers) Delegates for events don't need to be declared. They are implicitly declared in the declaration of the events. Referring to an object using an unqualified dot reference, using the With ... End With structure XML Literals Inline date declarations, e.g. #12/31/2000# Module (although C#'s static classes with additional semantics, but each field must be individually declared as static) Members of Modules imported to the current file, can be accessed with no preceding container accessor The My namespace. COM components and interoperability was more powerful in VB.NET, as the Object type is bound at runtime; however, C# 4.0 added the dynamic type, which functions as a late-bound form of Object Namespaces can be imported at the project level, so that they don't have to be imported into each individual file, as in C# Definition of conditional compiler constants Property methods may take parameters Properties can be passed to methods with ByRef parameters (ref parameters in C#). In C# you have to write three additional instructions: Declare a variable, copy the property value into the variable and copy the variable back to the property after the method call. Enums can be defined inside interfaces Case statements may contain inequality expressions, like Is >= 3. (in C# this can be mimicked by nested Else and If statements) Overloads keyword specifies that a property or procedure redeclares one or more existing properties or procedures with the same name within the same class or the base class. (the lack of this keyword in C# might lead to inadvertent overloading) Implements keyword to indicate which interfaces a class member implements. In C# a similar syntax exist, but it is optional and it can only be applied if the member implements a single interface. Like operator for pattern comparison of strings