Click here to Skip to main content
Click here to Skip to main content

Tagged as

C# 4.0 New Features – Named and Optional Parameters

, 22 Mar 2010
Rate this:
Please Sign up or sign in to vote.
In this post, I will talk about one of the new features in C# 4.0 – Named and Optional Parameters. Actually these are not a single feature, but two different features.

In this post, I will talk about one of the new features in C# 4.0 – Named and Optional Parameters. Actually these are not a single feature, but two different features. You can get more benefit if you work with them together. So, what are those? Named parameter is a way to provide a parameter to the method using the name of the corresponding parameter instead of its position in the parameter list. Whereas, optional parameter allows you to omit arguments to member invocation.

Let us discuss it in depth with a simple example. First start with the Optional Parameter. Suppose you are creating a Calculator application where you have to do some “Add” operation by passing two, three or four parameters to the method. What will you do if you are using C# 2.0 or 3.0? You will have no other choice than creating as many methods and passing the parameters in this which is known as method overloading.

public int Add(int a, int b);
public int Add(int a, int b, int c);
public int Add(int a, int b, int c, int d);

If you are using C# 4.0, just forget about method overloading by using the optional parameter. Optional parameter is a default value passed to the method signature. Let us go for modifying our previous example to use optional parameter.

public int Add(int a, int b, int c = 0, int d = 0);

Here, we are passing default values to the parameters “c” and “d”. Hence you can call this method as per your requirement like this:

Add(10, 20); // 10 + 20 + 0 + 0
Add(10, 20, 30); // 10 + 20 + 30 + 0
Add(10, 20, 30, 40); // 10 + 20 + 30 + 40

In the first case, it will pass ‘0’ (zero) as the optional parameter c and d, in the second case the fourth parameter will be treated as ‘0’ (zero) and in the third case all the parameters are available with proper values.

Now, let us think that we have a situation where we are creating an account of a user with the method named “CreateAccount” which has a non-optional parameter “Name” and two optional parameters “Address” & “Age”. Here in some scenario, you want to pass only the “Name” and “Age”, how can you pass? Just think about it.

public void CreateAccount(string name, string address = "unknown", int age = 0);

Are you thinking of calling the method with an empty string or null value to the “Address” parameter? Oh, not really. There comes another new feature of C# 4.0 called as “Named Parameter”. Using this, you can call the method with proper name resolution or even you can change the position of the parameter while calling the method. Have a look into the following code example:

CreateAccount("Kunal", age: 28);
CreateAccount(address: "India", name: "Kunal");

The first example shows calling the method without the middle parameter “Address” and the second example demonstrates calling the same method after changing the position of the parameter in the parameter list using the name of the parameter. In this way, you can create a single method with Named & Optional Parameter instead of overloading it several times and use it everywhere you need as per your requirement. This gives more cleaner code with less efforts. Enjoy working with this. Cheers!


License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

_ Kunal Chowdhury _
Technical Lead
India India
Kunal Chowdhury is a Microsoft "Client Development" MVP (Most Valuable Professional), a Codeproject Mentor, Telerik MVP, Nokia Developer Champion, Speaker in various Microsoft events, Author, passionate Blogger and a Software Engineer by profession.
 
He is currently working in an MNC located in India. He has a very good skill over XAML, C#, Silverlight, Windows Phone, WPF and Windows 8 (WinRT). He posts his findings, articles in his technical blog and CodeProject.
 
Technical Blog: http://www.kunal-chowdhury.com
Facebook: http://facebook.com/blog.kunal
Twitter : http://twitter.com/kunal2383
Follow on   Twitter   Google+   LinkedIn

Comments and Discussions

 
GeneralMy vote of 5 Pinmemberaamarnathshetty31-Aug-12 2:06 
GeneralGood one Pinmvpthatraja29-Jan-12 9:39 
GeneralSimple, but good PinmemberChad Strawinski30-Mar-10 5:19 
GeneralRe: Simple, but good PinmemberKunalChowdhury30-Mar-10 5:26 
GeneralMy vote of 3ish PinmemberEngleA30-Mar-10 3:32 
GeneralRe: My vote of 3ish PinmemberKunalChowdhury30-Mar-10 4:47 
GeneralTrue power PinmemberNickThissen22-Mar-10 11:14 
GeneralRe: True power Pinmembermathomp330-Mar-10 2:30 
GeneralRe: True power PinmemberKunalChowdhury30-Mar-10 4:25 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web04 | 2.8.140814.1 | Last Updated 22 Mar 2010
Article Copyright 2010 by _ Kunal Chowdhury _
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid