条件表达式的类型不能确定(Func)怎么办?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (58)

将一个方法Func赋给一个-type时,我得到编译错误Type of conditional expression cannot be determined because there is no implicit conversion between 'method group' and 'method group'

代码:

public class Test
{
    public static string One(int value)
    {
        value += 1;
        return value.ToString();
    }
    public static string Two(int value)
    {
        value += 2;
        return value.ToString();
    }
    public void Testing(bool which)
    {
        // This works
        Func<int, string> actionWorks;
        if (which) actionWorks = One; else actionWorks = Two;

        // Compilation error on the part "One : Two"
        Func<int, string> action = which ? One : Two;
    }
}
提问于
用户回答回答于

需要明确提供至少一个方法组的签名。但是,编译器在完成之后会允许你声明action为隐式类型:

var action = which ? (Func<int, string>)One : Two;
用户回答回答于

唯一的解决办法是明确转换:

Func<int, string> action = which ? new Func<int, string>(One) : new Func<int, string>(Two);

所属标签

可能回答问题的人

  • 天使的炫翼

    16 粉丝531 提问35 回答
  • 富有想象力的人

    2 粉丝0 提问26 回答
  • 旺仔小小鹿

    社区 · 运营 (已认证)

    48 粉丝0 提问26 回答
  • 发条丶魔灵1

    6 粉丝525 提问25 回答

扫码关注云+社区

领取腾讯云代金券