What's the difference between the 'ref' and 'out' keywords?

TK. picture TK. · Dec 23, 2008 · Viewed 388.2k times · Source

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)

and

public void myFunction(out MyClass someClass)

Which should I use and why?

Answer

Rune Grimstad picture Rune Grimstad · Dec 23, 2008

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.