C# – What’s the difference between the ‘ref’ and ‘out’ keywords


I'm creating a function where I need to pass an object so that it can be modified by the function. What is the difference between:

public void myFunction(ref MyClass someClass)


public void myFunction(out MyClass someClass)

Which should I use and why?

Best Solution

ref tells the compiler that the object is initialized before entering the function, while out tells the compiler that the object will be initialized inside the function.

So while ref is two-ways, out is out-only.