No. Sin embargo, puede definir su propio delegado/interfaz.
public delegate int DoTheThing(int a, int b);o
public interface IThingDoer { int DoTheThing(int a, int b); }No puede hacer esto con Func<...> ya que ya tiene nombres para los parámetros de tipo (es solo un tipo genérico normal).
En su lugar, podría definir un delegado (que debe definirse a nivel de clase; no puede definirlo dentro de un método o como un parámetro de método):
public delegate int MyFunc(int a, int b);Entonces solo lo usas como:
public static int MyMethod(MyFunc myfunc) { return myfunc(1, 2); } public static int MyOtherMethod() { return MyMethod((a, b) => a + b); }Una solución algo sucia podría ser usar una tupla para los argumentos:
public static int MyMethod(Func<(int a, int b), int> myFunc) { return myFunc((1, 2)); } public static int MyOtherMethod() { return MyMethod(tuple => tuple.a + tuple.b); }Luego intellisense le dirá los nombres de los miembros de la tupla. Sin embargo, no haría esto, solo lo menciono para completar.