One of the interesting features of C# 4.0 is for both named and optional arguments. They are often very useful together, but are quite actually two different things. Optional arguments gives us the ability to omit arguments to method invocations. Named arguments allows us to specify the arguments by name instead of by position. Code using the named parameters are often more readable than code relying on argument position. These features were long overdue, especially in regards to COM interop. Below, I have included some examples to help you understand them more in depth. Please remember to target the .NET 4 Framework when trying these samples. Code Snippet using System; namespace ConsoleApplication3 { class Program { static void Main(string[] args) { //C# 4.0 Optional/Named Parameters Tutorial Foo(); //Prints to the console | Return Nothing 0 Foo("Print Something"); //Prints to the console | Print Something 0 Foo("Print Something", 1); //Prints to the console | Print Something 1 Foo(x: "Print Something", i: 5); //Prints to the console | Print Something 5 Foo(i: 5, x: "Print Something"); //Prints to the console | Print Something 5 Foo("Print Something", i: 5); //Prints to the console | Print Something 5 Foo2(i3: 77); //Prints to the console | 77 // Foo(x:"Print Something", 5); //Positional parameters must come before named arguments. This will error out. Console.Read(); } static void Foo(string x = "Return Nothing", int i = 0) { Console.WriteLine(x + " " + i + Environment.NewLine); } static void Foo2(int i = 1, int i2 = 2, int i3 = 3, int i4 = 4) { Console.WriteLine(i3); } } }