I know, I know, VB has had them for ages.
But I don’t care… Now C# has them too!
This will greatly reduce method overloads!
Check this bit of code (sorry it’s not a “real world” example)
public class TestClass
{
public void DoSomething(string parameterOne, string parameterTwo, string parameterThree)
{
DoSomething(parameterOne, parameterTwo, parameterThree, null);
}
public void DoSomething(string parameterOne, string parameterTwo, string parameterThree, string parameterFour)
{
if (parameterFour != null)
{
//doing somthing with the parameters.
}
}
}
The DoSomething method has an overload on it that takes a fourth parameter (in this case parameterFour)
When we use the above code, our intellisense looks like this:
…and the second overload
As we can see, the method has 2 overloads. One taking parameterFour, one not.
New in C# 4.0, we can use something called optional parameters.
This allows us to change our method to:
public class TestClass
{
public void DoSomething(string parameterOne, string parameterTwo, string parameterThree, string parameterFour = null)
{
if (parameterFour != null)
{
//doing something with the parameters.
}
}
}
As you can see, we’ve removed the overloaded method – I’m sure you can appreciate, if we had a method with many overloads, this results in much cleaner code 🙂
Now, our intellisense looks like this:
In my opinion, this looks a bit confusing.
Sure, I’ll get used to it, but in my opinion, the method is still sort of overloaded… just with optional parameters!
One response to “C# 4.0 – Optional Parameters”
[…] I converted some of our projects here at Crocus to the .net 4 framework (which was incredibly easy – nothing broke!) I even took advantage of some of the quick to implement features in .net 4, and converted some of our massively over-ridden methods to use optional parameters. […]