I have a method with an out
parameter, and I'd like to point an Action
or Func
(or other kind of delegate) at it.
This works fine:
static void Func(int a, int b) { }
Action<int,int> action = Func;
However this doesn't
static void OutFunc(out int a, out int b) { a = b = 0; }
Action<out int, out int> action = OutFunc; // loads of compile errors
This is probably a duplicate, but searching for 'out parameter' isn't particularly fruitful.
No, not with the builtin delegates.
out
andref
are special qualifiers and the delegate has to be setup with them explicitly since they are completely different calling styles.However, if you defined your own delegate, you can do this:
Action and Func specifically do not take out or ref parameters. However, they are just delegates.
You can make a custom delegate type that does take an out parameter, and use it, though.
For example, the following works:
This prints out: