welcome folks
FAQ in android,FAQ in dotnet,DotNet, C#,DOT NET CODE, ASP.NET, VB.NET, TRICKS,Dotnetcode,Android and Latest Technology Articles in VB,Android and ASP.NET

Friday, September 14, 2012

Difference between ref and out parameters in C#

Ref and Out Parameters: 

Both the parameters passed by reference, While for the Ref Parameter you need to initialize it before passing to the function and out parameter you do not need to initialize before passing to function. 

you need to assign values into these parameter before returning to the function. 

Ref (initialize the variable) 
int getal = 0; 
Fun_RefTest(ref getal); 


Out (no need to initialize the variable) 
int getal; 
Fun_OutTest(out getal); 


The out and the ref parameters are used to return values in the same variables, that you pass an an argument of a method. These both parameters are very useful when your method needs to return more than one values. 

In this article, I will explain how do you use these parameters in your C# applications. 

The out Parameter 

The out parameter can be used to return the values in the same variable passed as a parameter of the method. Any changes made to the parameter will be reflected in the variable. 

public class mathClass 

public static int TestOut(out int iVal1, out int iVal2) 

iVal1 = 10; 
iVal2 = 20; 
return 0; 

public static void Main() 

int i, j; // variable need not be initialized 
Console.WriteLine(TestOut(out i, out j)); 
Console.WriteLine(i); 
Console.WriteLine(j); 



The ref parameter 

The ref keyword on a method parameter causes a method to refer to the same variable that was passed as an input parameter for the same method. If you do any changes to the variable, they will be reflected in the variable. 

You can even use ref for more than one method parameters. 

namespace TestRefP 

using System; 
public class myClass 

public static void RefTest(ref int iVal1 ) 

iVal1 += 2; 

public static void Main() 

int i; // variable need to be initialized 
i = 3; 
RefTest(ref i ); 
Console.WriteLine(i); 


No comments:

Post a Comment