【发布时间】:2011-05-16 10:01:22
【问题描述】:
我见过类似的问题,但它们涉及不同的类型,所以我认为这是一个新问题。
考虑以下代码:
public void Test(bool value)
{
// The following line provokes a compiler error:
// "Type of conditional expression cannot be determined because there is
// no implicit conversion between 'method group' and 'method group".
Func<bool> test = value ? F : F;
}
public bool F()
{
return false;
}
现在,根据 C# 3.0 标准,
第二个和第三个操作数 ?:操作员控制的类型 条件表达式。设 X 和 Y 为 第二个和第三个的类型 操作数。那么,
如果 X 和 Y 是同一类型,那么 这是条件的类型 否则,如果隐式转换 (§6.1)从 X 到 Y 存在,但不存在 从 Y 到 X,那么 Y 是 条件表达式。否则,如果 存在隐式转换(§6.1) 从 Y 到 X,但不是从 X 到 Y,然后 X 是条件的类型 表达。否则不表达 类型可以确定,并且一个 发生编译时错误。
在我看来,在我的示例代码中,X 和 Y 必须属于同一类型,因为它们是相同的实体,Func。那为什么不编译呢?
【问题讨论】:
-
我不知道,但你能解释一下如何在表达式
Func中编写一个返回类型为 void 的方法名吗?? -
抱歉,为了简化原始代码中的代码,我错误地删除了返回类型。我现在已经修好了!
标签: c#