MulticastDelegate
delegate TResult Foo3<TResult,TArg>(TimeSpan timeout, ref TArg arg0)
TResult
TimeSpan
ref
TArg