C# ref vs. out: What’s the Difference?

Ibrahim Jaber
2 min readApr 29, 2023

In C#, both the ref and out keywords are used for passing parameters by reference. However, there are some differences between the two that are important to understand.

When you pass a parameter by value, the function gets a copy of the parameter’s value. Any changes made to the parameter inside the function do not affect the original value of the parameter. However, when you pass a parameter by reference, the function gets a reference to the original parameter’s memory location. Any changes made to the parameter inside the function will affect the original value of the parameter.

The ref keyword is used to pass a parameter by reference, but the parameter must be initialized before it is passed. The out keyword, on the other hand, is used to declare that a parameter is an output parameter, which means that the parameter does not need to be initialized before it is passed. Instead, the function is responsible for initializing the output parameter.

Here’s an example that demonstrates the use of ref and out in C#:

class Program
{
static void Main(string[] args)
{
int x = 5;
int y;

// Call the function with a parameter passed by reference
AddOne(ref x);
Console.WriteLine("x after AddOne(ref x): " + x);

// Call the function with an output parameter
MultiplyByTwo(3, out y);
Console.WriteLine("y after MultiplyByTwo(3, out y): " + y);
}

static void AddOne(ref int num)
{
num += 1…

--

--

Ibrahim Jaber

Software developer | Programming and Blockchain enthusiast