I have...
Func<string> del2 = new Func<string>(MyMethod);
and I really want to do..
Func<> del2 = new Func<>(MyMethod);
so the return type of the callback method is void. Is this possible using the generic type func?
The Func
family of delegates is for methods that take zero or more parameters and return a value. For methods that take zero or more parameters an don't return a value use one of the Action
delegates. If the method has no parameters, use the non-generic version of Action
:
Action del = MyMethod;
Yes a function returning void (no value) is a Action
public Test()
{
// first approach
Action firstApproach = delegate
{
// do your stuff
};
firstApproach();
//second approach
Action secondApproach = MyMethod;
secondApproach();
}
void MyMethod()
{
// do your stuff
}
hope this helps
使用操作委托类型 。
In cases where you're 'forced' to use Func<T>
, eg in an internal generic API which you want to reuse, you can just define it as new Func<object>(() => { SomeStuff(); return null; });
.
Here is a code example using Lambda expressions instead of Action/Func delegates.
delegate void TestDelegate();
static void Main(string[] args)
{
TestDelegate testDelegate = () => { /*your code*/; };
testDelegate();
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.