动作委托可以指向具有返回类型的方法吗?例如
Action a = () => Add();
int Add()
{
return 5 + 6;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码编译.现在如果我写上面的东西就像
Action a = new Action(Add);
Run Code Online (Sandbox Code Playgroud)
这不编译.有谁能帮助我理解这背后的逻辑?
Action a = () => Add();
int Add()
{
return 5 + 6;
}
Run Code Online (Sandbox Code Playgroud)
在功能上等同于
Action a = ExecuteAdd;
int Add()
{
return 5 + 6;
}
void ExecuteAdd()
{
Add();
}
Run Code Online (Sandbox Code Playgroud)
并且Action a = new Action(ExecuteAdd);会编译.
原因是() => Add();实际上创建了一个匿名方法.将其分配给类型的变量会Action推断返回类型void.
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |