A_Name_Does_Not_Matter A_Name_Does_Not_Matter - 3 months ago 16
C# Question

Method Overloading with Optional Parameter

I have a class as follows with two overload method.

Class A
{
public string x(string a, string b)
{
return "hello" + a + b;
}

public string x(string a, string b, string c = "bye")
{
return c + a + b;
}
}


If I call the method
x
from another class with two parameters, then which method is going to execute and why? i.e,

string result = new A().x("Fname", "Lname");


I've tested this in my console application and the method with 2 parameters execute. Can someone explain this?

Answer

Use of named and optional arguments affects overload resolution:

If two candidates are judged to be equally good, preference goes to a candidate that does not have optional parameters for which arguments were omitted in the call. This is a consequence of a general preference in overload resolution for candidates that have fewer parameters.

Reference: MSDN


Implying the above rule method with 2 parameters string x(string a,string b) will be called.

Note: If both overloaded methods have optional parameters then compiler will give run-time ambiguity error.

Comments