我想编写一个仅将PerformanceCounterCategory作为参数的Action.我知道有Action <>,Func <>和Delegates,它们之间有一些区别,但我不确定它是什么.有人可以告诉我有什么区别(我读过Action没有返回的地方,或者这可能是Func).
我想写下面的内容:
Action<PerformanceCounterCategory> action = (int > 5) ? action1 : action2;
Run Code Online (Sandbox Code Playgroud)
action1和action2都是返回void但将PerformanceCounterCategory作为(唯一)参数的方法.
这是正确的方法吗?我不断收到有关方法组/ void等的错误,所以我不相信上面的代码对我的需求是最好的.
谢谢
你需要施放一侧或其他 - 或者不使用条件运算符.
基本上,忽略赋值 - 因为编译器会这样做.它不会使用您尝试分配给变量来计算条件表达式类型的事实.我们只剩下:
(i > 5) ? action1 : action2
Run Code Online (Sandbox Code Playgroud)
作为表达.那是什么类型的?方法组应转换为什么委托类型?编译器无法知道.如果您转换其中一个操作数,编译器可以检查另一个操作数是否可以转换:
(i > 5) ? (Action<PerformanceCounterCategory>) action1 : action2
Run Code Online (Sandbox Code Playgroud)
或者:
Action<PerformanceCounterCategory> action = action2;
if (i > 5)
{
action = action1;
}
Run Code Online (Sandbox Code Playgroud)
这很不幸,但这就是我害怕的生活:(
| 归档时间: |
|
| 查看次数: |
1031 次 |
| 最近记录: |