by checking an option) C# identifiers are case-sensitive. To assign the same value to multiple variables, you can use a=b=c. Syntax comparisons Visual Basic .NET terminates a block of code with End BlockName statements (or Next statements, for a for loop) which are more familiar for programmers with experience using T-SQL. In C#, the braces, {}, are used to delimit blocks, which is more familiar to programmers with experience in other widely deployed languages such as C++ and Java. Additionally, in C# if a block consists of only a single statement, the braces may be omitted. C# is case sensitive while Visual Basic .NET is not. Thus in C# it is possible to have two variables with the same apparent name, for example variable1 and Variable1. Visual Studio will correct (make uniform) the case of variables as they are typed in VB.NET. In some cases however, case sensitivity can be useful. C# programmers typically capitalize type and member names and leave field and variable names lowercase. This allows, for example, a fairly natural naming of method arguments: public int CalculateOrders(Customer customer). This can, however, cause problems for those converting C# code to a case-insensitive language, such as Visual Basic, or to those unaccustomed to reading a case sensitive language. Keywords Visual Basic is not case sensitive, which means that any combinations of upper and lower case letters in keywords are acceptable. Visual Studio automatically converts all Visual Basic keywords to the default capitalised forms, e.g. "Public", "If". C# is case sensitive and all C# keywords are in lower cases. Visual Basic and C# share most keywords, with the difference being that the default Visual Basic keywords are the capitalised versions of the C# keywords, e.g. Public vs public, If vs if. A few keywords have very different versions in Visual Basic and C#: Friend vs internal - access modifiers allowing inter-class but not inter-assembly reference, except for friend assemblies Me vs this - a self-reference to the current object instance MustInherit vs abstract - prevents a class from being directly instantiated, and forces consumers to create object references to only derived classes MustOverride vs abstract - for forcing derived classes to override this method MyBase vs base - for referring to the base class from which the current class is derived NotInheritable vs sealed - for declaring classes that may not be inherited NotOverridable vs sealed - for declaring methods