Parameters
Parameters are simply values that can be passed into a method. A method specifies what parameters, along with their type, it accepts and expects. Traditionally in C#, when we want to accept different sets of parameters or set default values, we would overload methods and supply the information by chaining the calls. This can be messy and can cause a lot of variations of a method. Keeping track of default values can also become a challenge.
static void Main(string[] args)
{
CreatePerson("Marius");
CreatePerson("Marius", 24);
CreatePerson("Marius", 24, "USA");
}
static void CreatePerson(string Name)
{
CreatePerson(Name, 24, "USA");
}
static void CreatePerson(string Name, int Age)
{
CreatePerson(Name, Age, "USA");
}
static void CreatePerson(string Name, int Age, string Location)
{
//Logic...
}
Default Values & Optional Parameters in C# 4.0
In order to deal with the default value issue, C# 4.0 has introduced default values. By assigning a default to a parameter, we don’t require the value to be passed in which automatically makes it optional.
static void Main(string[] args)
{
CreatePerson("Marius");
CreatePerson("Marius", 24);
CreatePerson("Marius", 24, "USA");
}
static void CreatePerson(string Name, int Age = 20, string Location= "USA")
{
//Logic...
}
Named Parameters
When you have a method that has multiple optional parameters and you want to provide the value of only one, you have to use named parameters. These are quite simply parameters formatted as [Parameter Name]: Value
static void Main(string[] args)
{
CreatePerson("Marius", BirthPlace: "Other Location");
CreatePerson("Marius", Age:26);
CreatePerson("Marius", BirthPlace: "Other Location", Age: 26);
}
static void CreatePerson(string Name, int Age = 24, string BirthPlace = "USA")
{
//Logic...
}
Visual Studio & Conditions
The only conditions placed on the developer is that optional parameters are to be declared at the end of the method arguments, after all of the full parameters have been declared. This means that when calling the methods, all full parameters must be passed in like a normal method, and then the named parameters can be given for the optional default parameters in any order.
Visual Studio 2010 adds supports for these new language features very nicely. As you can see below, the default values for the optional parameters are shown, and intellisense supports the selection of the named paramaters as expected.
Other Thoughts
As with each iteration of the C# language, Optional Parameters, Named Parameters, and Default Values give even more control to the C# developer. These new features will save a lot of overloading and method chaining, and will undoubtebly save a lot of developers from the “factory method” value instatiation.
HAPPY CODING!








