Introduction to C# Call By Reference
The location of the variable in the memory is referenced by using a parameter called reference parameter. These are different from the parameters carrying the value requiring a new storage location for the parameter because the same memory location is represented by the reference parameters just like the original parameters passed as an argument to the method. We make use of the keyword ref to declare the parameters and whenever reference arguments are passed as a parameter to any function, the reference to the memory location is passed and not the original value and if we are calling any variable by reference, then it is called call by reference in C#.
Syntax of C# Call By Reference:
ref data_typevariable_name
Where data_type is the data type of the variable with variable_name.
Working of C# Call By Reference
- Whenever there is a need to call a function which accepts arguments and if we want to pass the reference address of the variable in the memory location as an argument to the function, we make use of call by reference in C#.
- The parameter passed as a reference address of the variable in the memory location is called reference parameter.
- By using call by reference, only the reference to the memory location of the variable is passed and not a copy of the variable is created thereby saving the memory location space.
- The keyword ref is used to declare the reference parameter in C#.
Examples of C# Call By Reference
Given below are the examples mentioned:
Example #1
C# program to demonstrate call by reference in which we calculate the square of a number and display the values before calling the function by reference and after the function is called.
Code:
using System;
//a namespace called program1 is defined
namespace program1
{
//a class called check is defined
class check
{
//a function is defined which takes reference variable as an argument
public void displaypower(ref double value)
{
//the square of the passed value is found using pow method
double power = Math.Pow(value,2);
//The resulting value is added to the value passed as reference
value = value + power;
Console.WriteLine("Value when the control is inside the function "+value);
}
//main method is called
static void Main(string[] args)
{
//a double variable is defined
double value = 5;
//an instance of the check class is defined which consists of the function taking reference parameter as an argument
check check1 = new check();
Console.WriteLine("Value before the function is called "+value);
//a function is called by reference
check1.displaypower(ref value);
Console.WriteLine("The value of the variable remains the same as inside the function because we are calling the function by reference " + value);
}
}
}
Output:
Explanation:
- In the above program, a namespace called program1 is defined. Then a class called check is defined within which a function is defined which takes reference variable as an argument. The function takes the value passed as a reference and calculates the square of the value and adds to the actual value and then displays the resulting value.
- Then the main method is called within which a double variable is defined whose reference is passed to the function defined in check class by creating an instance of the check class and then the value of the variable after calling the function is displayed which remains the same as inside the function called because we are passing this value by reference to the function in check class.
Example #2
C# program to demonstrate call by reference in which we convert the given string in small letters to capital letters by calling the function by reference and passing the string in small letters as reference parameter.
Code:
using System;
//a namespace called program1 is defined
namespace program1
{
//a class called check is defined
class check
{
//a function is defined which takes reference variable as an argument
public void displayupper(ref string value)
{
//ToUpper method is used to convert the string from small letters to capital letters
value = value.ToUpper();
Console.WriteLine("Value when the control is inside the function "+value);
}
//main method is called
static void Main(string[] args)
{
//a double variable is defined
string value = "shobha";
//an instance of the check class is defined which consists of the function taking reference parameter as an argument
check check1 = new check();
Console.WriteLine("Value before the function is called "+value);
//a function is called by reference
check1.displayupper(ref value);
Console.WriteLine("The value of the variable remains the same as inside the function because we are calling the function by reference " + value);
}
}
}
Output:
Explanation:
- In the above program, a namespace called program1 is defined. Then a class called check is defined within which a function is defined which takes reference variable as an argument. The function takes the value passed as a reference and converts the given string in small letters to capital letters using ToUpper() method.
- Then the main method is called within which a string variable is defined whose reference is passed to the function defined in check class by creating an instance of the check class and then the value of the variable after calling the function is displayed which remains the same as inside the function called because we are passing this value by reference to the function in check class.
Recommended Articles
This is a guide to C# Call By Reference. Here we discuss the introduction to C# Call By Reference with working and programming examples. You may also have a look at the following articles to learn more –