The more I see ref used in production code, the more misuse I encounter and the more pain it causes me. I have come to hate this keyword, because from a framework-building s
The Framework Design Guidelines (a book by Krzysztof Cwalina and Brad Abrams) recommend to avoid both ref and out parameters.
AVOID using
outorrefparameters.Using
outorrefparameters requires experience with pointers, understanding how value types and reference types differ, and handling methods with multiple return values. Also, the difference betweenoutandrefparameters is not widely understood. Framework architects designing for a general audience should not expect users to master working withoutorrefparameters.
The Framework Design Guidelines cite the canonical Swap method as a valid exception:
void Swap(ref T obj1, ref T obj2)
{
T temp = obj1;
obj1 = obj2;
obj2 = temp;
}
but at the same time a comment remarks
Swap always comes up in these discussions, but I have not written code that actually needed a swap method since college. Unless you've got a very good reason, avoid
outandrefaltogether.