What are the differences between ref and out keywords?

In C#, both `ref` and `out` are used as keywords when passing parameters to methods, but they have different purposes:

1. `ref`:
   - `ref` is used to pass a variable as a reference to the method. Any changes made to the parameter inside the method are reflected outside of the method.
   - The variable passed with `ref` must be initialized before calling the method.
   - It is used for both input and output parameters.

Example:

```csharp
public void ModifyWithRef(ref int x)
{
    x = x * 2;
}

int value = 5;
ModifyWithRef(ref value);
Console.WriteLine(value); // Outputs 10
```

2. `out`:
   - `out` is used for output parameters. It indicates that the method is expected to assign a value to the parameter.
   - Unlike `ref`, the variable passed with `out` doesn't need to be initialized before calling the method.
   - The method must assign a value to the `out` parameter before it returns.

Example:

```csharp
public void GetDoubledValue(out int result)
{
    result = 10 * 2;
}

int value;
GetDoubledValue(out value);
Console.WriteLine(value); // Outputs 20
```

In summary, `ref` is used for both input and output parameters, and the variable must be initialized before the method call. On the other hand, `out` is specifically used for output parameters, and the variable doesn't need to be initialized before the method call.

Comments

Popular posts from this blog

What is extension method with example in c#

What is hash table in c# and when we should use it

What is valuetuple in c# with example