Prior to C# 4.0, we have to remember (though intellisense helped!) the order of each argument to use it in the consuming code.
C# 4.0 introduces a new concept which frees you to provide value to arguments in a specified order. For example, a function that calculates dearness allowance for an employee can be called in the standard way by sending arguments for salary and inflation percentage by position, in the order defined by the function.
1: GetDearnessAllowance(5000, 9);
If you do not remember the order of the parameters but you do know their names, you can send the arguments in either order, weight first or height first.
1: GetDearnessAllowance(wage: 5000, inflation: 9);
OR
1: GetDearnessAllowance(inflation: 9, wage: 5000);
Named arguments also improve the readability of your code by identifying what each argument represents.
A named argument can follow positional arguments, as shown here.
1: GetDearnessAllowance(5000, inflation: 9);
However, a positional argument cannot follow a named argument. The following statement causes a compiler error.
1: //GetDearnessAllowance(weight: 5000, 9);
We hope this clears up the matter.