in a much simpler way than using regular expressions. (in C# the same is available with the Microsoft.VisualBasic.CompilerServices.LikeOperator.LikeString method, but not as a handy language key word) Return statement is not required. Return can also be done by assigning the value to the function Visual basic has built in constants like vbCrLf and vbTab No out parameter modifier exists, because in VB all variables are automatically initialised. The MyClass keyword behaves like an object variable referring to the current instance of a class as originally implemented. MyClass is similar to Me, but all method calls on it are treated as if the method were NotOverridable. MyBase.New is used to explicitly call a base class constructor from a derived class constructor. The My feature provides easy and intuitive access to a number of .NET Framework classes, enabling the Visual Basic user to interact with the computer, application, settings, resources, and so on. Local variables (i.e. variables declared inside of a procedure) are automatically initialized. Local variables can be declared with the Static modifier in order to preserve their value between calls to the procedure. The Default declaration makes a property an index and able to use the shorter syntax for collection retrievals like MyCollection(5). C# has a similar construct reusing the keyword this as the name of the property. Multiple indexers can be declared using keys of different types e.g. MyCollection(5) or MyCollection("Bob"). C# lacks the DirectCast (mapping to a single CLR instruction), strict type conversion can be achieved by the as operator which includes an additional runtime error protection. C# lacks the End statement which abruptly terminates an application. Lambda expressions inference Dim x = Function(n As Integer) n + 1 Features of C# not found in Visual Basic .NET Use C# ref struct in VB.NET : Detailed information can be found, for example here : https://www.vbforums.com/showthread.php?889867-Use-C-ref-struct-in-VB-NET-Today-And-vote-against-preventing-this-in-Roslyn Multi-line comments. In VB this is handled in the Visual Studio IDE editor, which adds comment markers to selections. Static classes (classes which cannot contain any non-static members, although VB.NET's Modules are essentially static classes with additional semantics) Can use checked and unchecked contexts for fine-grained control of overflow/underflow checking Iterative for-loops can contain multiple conditionals, such as for(int i = 0; i < 10 && somethingTrue; i++). This is a legacy of C, where the for statement is basically syntactic sugar for a while statement. The getter and setter of a property