Passing by reference using ref keyword C# with Example



Passing by reference using ref keyword C# with Example

From the documentation : 
In C#, arguments can be passed to parameters either by value or by reference. Passing by reference 
enables function members, methods, properties, indexers, operators, and constructors to change the 
value of the parameters and have that change persist in the calling environment. To pass a parameter by 
reference, use the ref or out keyword. 
The difference between ref and out is that out means that the passed parameter has to be assigned before the 
function ends.in contrast parameters passed with ref can be changed or left unchanged. 
using System; 
class Program 
{ 
static void Main(string[] args) 
{ 
int a = 20; 
Console.WriteLine("Inside Main - Before Callee: a = {0}", a); 
Callee(a); 
Console.WriteLine("Inside Main - After Callee: a = {0}", a); 
Console.WriteLine("Inside Main - Before CalleeRef: a = {0}", a); 
CalleeRef(ref a); 
Console.WriteLine("Inside Main - After CalleeRef: a = {0}", a); 
Console.WriteLine("Inside Main - Before CalleeOut: a = {0}", a); 
CalleeOut(out a); 
Console.WriteLine("Inside Main - After CalleeOut: a = {0}", a); 
Console.ReadLine(); 
} 
static void Callee(int a) 
{ 
a = 5; 
Console.WriteLine("Inside Callee a : {0}", a); 
} 
static void CalleeRef(ref int a) 
{ 
a = 6; 
Console.WriteLine("Inside CalleeRef a : {0}", a); 
} 
static void CalleeOut(out int a) 
{ 
a = 7; 
Console.WriteLine("Inside CalleeOut a : {0}", a); 
} 
} 
Output : 
 

Inside Main - Before Callee: a = 20 
Inside Callee a : 5 
Inside Main - After Callee: a = 20 
Inside Main - Before CalleeRef: a = 20 
Inside CalleeRef a : 6 
Inside Main - After CalleeRef: a = 6 
Inside Main - Before CalleeOut: a = 6 
Inside CalleeOut a : 7 
Inside Main - After CalleeOut: a = 7 

0 Comment's

Comment Form

Submit Comment