Optional Arguments
An optional parameter has a default value. A method with an optional parameter can be called with only some of its parameters specified. Using this feature in new versions of the C# language, we add default values for formal parameters.
static int Pow(int x, int y=3)
{
int result = 2;
for (int i = 0; i < y; i++)
{
result *= x;
}return result;
}
The Pow method assigns a default value of 2 to the y parameter. If we call the method without passing the value for the y parameter, the default value will be used.
The Code:

The Output of Your Program:

As you can see, default parameter values can be used for calling the same method in different situations without requiring arguments for every parameter.
Just remember, that you must have the parameters with default values at the end of the parameter list when defining the method.
Named Arguments
Named Parameter helps to pass parameters with parameter name to method. Generally we maintain parameters sequence when we pass parameters to a method. However in Named Parameter, it doesn’t need to maintain sequence while passing parameters to a method rather we can pass parameters with parameter name. Secondly, Parameter name should match with method definition parameter name.
static int Area(int h, int w, int l)
{
return l * h * w;
}
When calling the method, you can use the parameter names to provide the arguments in any order you like:
The Code:

The Output of Your Program:

Named arguments use the name of the parameter followed by a colon and the value.
