Why does the .Net framework guidelines recommend that you don't use ref/out arguments?

.net, c#, function, parameters

Solution

Have you seen how many developers don't really understand ref/out?

I use them where they're really necessary, but not otherwise. They're usually only useful if you want to effectively return two or more values - in which case it's worth at least thinking about whether there's a way of making the method only do one thing instead. Sometimes using ref/out is the most appropriate approach - the various TryParse methods etc.

Problem

Apparently, they're "confusing". Is that seriously the reason? Can you think of any others?

Original source