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

Authentication Filters in Web APIs in dotnet core

Custom filters of asp.net core api

What is Middleware in asp.net core