The syntax shown in Visual Studio is Func<T, TResult> where T is a parameter.
Either way, it won't let me pass in a type parameter by reference.
You have the parameter order correct, but you still can't do what you want. The only thing a generic parameter can express is a type. The The parameter direction is defined by the Func<> delegate itself, and you can't change it. Depending on what you're
trying to do, you can define your own delegate apart from Func<>. Something like this, perhaps:
public delegate int MyDelegate(out char value);
Actually, I'm not 100% sure the above is valid. An "out" parameter on a delegate may not be valid.