ref vs out parameters C# with Example



ref vs out parameters C# with Example

Code 
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(); 
Console.WriteLine("Inside Main - Before CalleeRef: a = {0}", a); 
CalleeRef(ref a); 
Console.WriteLine("Inside - After CalleeRef: a = {0}", a); 
Main 
Console.WriteLine(); 
Console.WriteLine("Inside - Before CalleeOut: a = {0}", a); 
Main 
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 += 10; 
Console.WriteLine("Inside CalleeRef a : {0}", a); 
} 
static void CalleeOut(out int a) 
{ 
// can't use a+=15 since for this method 'a' is not intialized only declared in the method 
declaration 
a = 25; //has to be initialized 
Console.WriteLine("Inside CalleeOut a : {0}", a); 
} 
} 
Output 
Inside Main - Before Callee: a = 20 
Inside Callee a : 25 
Inside Main - After Callee: a = 20 
Inside Main - Before CalleeRef: a = 20 
Inside CalleeRef a : 30 
Inside Main - After CalleeRef: a = 30 
 

Inside Main - Before CalleeOut: a = 30 
Inside CalleeOut a : 25 
Inside Main - After CalleeOut: a = 25 

0 Comment's

Comment Form

Submit Comment