1. Back To Blog

What is the difference between Out and Ref? (C# Interview questions)

Out and Ref are C# keywords which helps to pass variables in methods and functions as REFERENCE types. Out is one way and Ref is two way.

Let us try to understand the above sentence. Below is a simple function "SomeFunction" which takes a variable "InsideVar".

Now assume there is a caller who calls the above method as shown in the below code. After the call is made to "SomeFunction" , "OutSideVar" variable is not modified. In other words by default values are passed to methods and function BY VAL.

Now let us apply REF keyword to the method variable as shown in the below code.

If you decorate method variables using REF you also need to provide REF keyword in the caller as shown in the below code. Now in this situation the output of "OutSideVar"  will be "30". In other words the variable is passed by reference. Any modification to the REF variables inside the methods and function will be affected to outside variables as well.

OUT is same like REF keyword ,  it also passes variables by reference but the OUT variables compulsorily needs to be initialized inside the methods and functions.

Which means when the caller passes data to a method which is having OUT variables those data will be discarded. In the below case "20" value is passed from the caller but this data will be discarded as the OUT variables will be initialized again inside the method / function.

So lets summarize so that interviewer does not take us for a ride:-

  • OUT and REF helps to pass variables BY REFERENCE.

  • In OUT we need to compulsorily initialize variables inside the function for REF we do not need to do the same.

  • REF helps to pass data two ways i.e. from caller to callee and back. While OUT is one way it just passes data from callee to caller.

Below is a nice C# video which demonstrates the difference between OUT and REF keyword of C#

While writing this interview question I referred this article from codeproject

C# Out VS Ref

Shiv Prasad Koirala

Visit us @ www.questpond.com or call us at 022-66752917... read more

We are on Social