C# 4.0 allows one to use named and optional parameters.

Example:

1 2 3 4 5 6 |
int Calculate(int x = 1, int y = 2) { int someNumber = 0; //some algorithm to calculate return someNumber * y * x + 5 * 0.5; } |

One can call the method in multiple ways

1 2 3 4 5 6 7 |
int result = Calculate(1, 2); int result = Calculate(5); //value for x only, y is default to 2 int result = Calculate(); //value for x is 1 and y is 2 int result = Calculate(x: 123, y: 987); //named argument int result = Calculate(y: 345 x: 678); //named argument in reverse int result = Calculate(x: 123, 456); //compiler error not allowed position argument cannot follow name argument int result = Calculate(1, y: 456); //name argument can follow position argument |

Additional note, one cannot provide a gap in arguments.

Example:

1 2 3 4 5 6 |
int Calculate(int x, int y = 2, int z) //invalid int Calculate(int x, int y = 1, int z= 5) //valid int result = Calculate(1, , 3); //invalid int result = Calculate(1, 8); //z takes the value of 5 as default |

## Leave A Comment