У меня есть ...
Func<string> del2 = new Func<string>(MyMethod);
, и я действительно хочу сделать ..
Func<> del2 = new Func<>(MyMethod);
, поэтому возвращаемый тип метода обратного вызова void.Возможно ли это с помощью универсального типа func?
Семейство делегатов Func предназначено для методов, которые принимают ноль или более параметров и возвращают значение.Для методов, которые принимают ноль или более параметров и не возвращают значение, используйте один из делегатов Action.Если метод не имеет параметров, используйте неуниверсальную версию Action:
Func
Action
Action del = MyMethod;
Да, функция, возвращающая void (без значения): Action
public Test() { // first approach Action firstApproach = delegate { // do your stuff }; firstApproach(); //second approach Action secondApproach = MyMethod; secondApproach(); } void MyMethod() { // do your stuff }
надеюсь, что это поможет
Использование Тип делегата действия .
В случаях, когда вы «вынуждены» использовать Func<T>, например, во внутреннем универсальном API, который вы хотите использовать повторно, вы можете просто определить его как new Func<object>(() => { SomeStuff(); return null; });.
Func<T>
new Func<object>(() => { SomeStuff(); return null; });
Вот пример кода с использованием лямбда-выражений вместо делегатов Action / Func.
delegate void TestDelegate(); static void Main(string[] args) { TestDelegate testDelegate = () => { /*your code*/; }; testDelegate(); }