I tried this earlier today:
public interface IFoo
{
IEnumerable GetItems_A( ref int somethingElse );
IEnumerable GetItems_B( ref in
At a highish level, A ref variable can point to many locations including to value types that are on the stack. The time at which the iterator is initially created by calling the iterator method and when the ref variable would be assigned are two very different times. It is not possible to guarantee that the variable which originally was passed by reference is still around when the iterator actually executes. Hence it is not allowed (or verifiable)