SIGN UP MEMBER LOGIN:    
ARTICLE

Passing parameters to a function by Value and by Reference

Posted by Sivaraman Dhamodaran Articles | C# Language October 25, 2010
In this article we will see how to pass parameters to a function by Value and by Reference.
Reader Level:
Download Files:
 

Pass by Value

When we pass a parameter to a function by value, the parameter value from the caller is copied to the function parameter. Consider the below Example:

//The Function
private void PassByVal_X(int x)
{
          //Increment the value passed in
          x++;
}

//Calling Code
int testPassByRef;
testPassByVal = 10;
PassByVal_X(testPassByVal)

In the example, the caller passed the testPassByRef by value to the function PassByVal_X. The value of 10 from testPassByValue is copied to the parameter x.

Pass by Reference

When we pass a parameter to a function by reference, the reference to the actual value of the caller is copied to the function parameter. So, at the end there are two references pointing to the same value, one from the caller, and one from the function.

Have a look at the below example:

private void PassByRef_X(ref int x)
{
          //increment the value passed in
          x++;
}

//Calling Code
int testPassByRef;
testPassByRef = 10;
testPP.PassByRef_X(ref testPassByRef);
  1. In this Example, the variable x and the variable testPassByRef are pointing to the same location where the value 10 is stored. 
  2. Note the usage of the ref keyword. We are indicating to the compiler that value is passed by reference.
  3. Since the value is passed by reference, the increment of value x in side the function is reflected back to the caller in the variable testPassByRef.
  4. When we are passing by reference, the variable should be initialized. Otherwise, we will get a compilation error.
Pass by Reference with OUT

When we pass the parameter by reference, the compiler expects that we should initialize it. If there is a situation in which an object is declared outside the function, and the same variable will be assigned some value inside the function, then we should go for Pass by reference, but, not with ref. Because, ref expects that the value should be initialized. The Out keyword is used in this situation.

Both ref and out are meaning that we are passing by reference. The only difference is for out, the variable is not required to be initialized before passing it as parameter.

Look at the below example:

private void PassByRefOut_X(out int x, int y)
{
          //Assign some value by multiplying y with y
          // x is assigned first here, after the assignment
          x = y * y;
}

//calling code
int testPassByRefOut;
testPP.PassByRefOut_X(out testPassByRefOut, 10);

Note the usage out keyword. It implies that the parameter is still treated as Pass By Reference. But, now we need not initialize it and it must get assigned inside the function.

erver'>
Login to add your contents and source code to this article
share this article :
post comment
 
Nevron Gauge for SharePoint
Become a Sponsor
PREMIUM SPONSORS
  • The leading .NET charting control now features PDF, Flash and Silverlight export, visualization of large datasets and more. Deliver true charting functionality to your BI, Scorecard, Presentation or Scientific apps. Download evaluation now.
    Get 2 Months Free of ASP.NET Hosting for Only $4.95/month! Receive FREE MS SQL and MySQL Databases Including ASP.NET 4/3.5, MVC 3.0, Silverlight 4, Windows 2008/IIS 7.0 Plus FREE IIS 7 Modules. Host UNLIMITED ASP.NET Web Sites - Click Here!
Nevron Gauge for SharePoint
Become a Sponsor