So, let consider the following pseudo-code:
R foo(T)
The function receives something of type T as input parameter. Also it returns something as a result of type R. In your quiz, the question was about T. So, the only way to let foo() to modify input parameter T is to add special signature around the T:
R foo1(out T t) {...}
R foo2(ref T t) {...}
Well, actually there are two ways to do that, you see? The difference is: foo1 can accept non-initialized values and then set them to proper value inside foo1() code. However, foo2 requires the parameter to be initialized before calling foo2(). Because null value can not be referenced, thus can not be modified.
And, as kindly emphasized by Hans Kesting in comments below, "out" means "requires the calling code to modify the original contents of an input parameter". So, this is it.
See these link for more details: