确认C#中static bool M(int x)=>x%2==0的正确委托匹配选项
关于Func、Action、Predicate的委托匹配问题确认
我正在备考,已查阅Func、Action和Predicate的定义,明确Action无返回值,Predicate固定返回bool类型。现有题目代码:
static bool M (int x) => x%2 == 0;
给出的选项为:
A) Func <bool, int> A = M; B) Func <int, bool> B = M; C) Action <int, bool> C = M; D) Predicate <int> D = M;
根据所学知识,我认为正确选项是B和D,烦请帮忙确认是否正确?
你的判断完全正确,以下是各选项的具体分析:
- 选项A:
Func<bool, int>代表输入bool类型、返回int类型的委托,但方法M是输入int、返回bool,签名不匹配,错误。 - 选项B:
Func<int, bool>代表输入int类型、返回bool类型的委托,和M的签名完全一致,匹配成功,正确。 - 选项C:Action系列委托的核心特性是无返回值,但方法
M有bool类型的返回值,类型不兼容,错误。 - 选项D:
Predicate<int>是专门定义的输入int类型、返回bool类型的委托,和M的签名完全匹配,正确。
内容的提问来源于stack exchange,提问作者Mihailo
相关产品推荐
相关产品推荐

