【发布时间】:2016-12-05 09:44:28
【问题描述】:
我有一个看起来像这样的扩展方法:
public static bool DoesNotExist(this object toCheck)
{
return toCheck == null;
}
一般我是这样使用的:
if(myObject.DoesNotExist())
{
}
我有一个包含像这样的条件访问表达式的表达式
if (myObject?.MyProperty == null)
编译器很满意。如果我那个表达式使用我的扩展方法,像这样:
if (myObject?.MyProperty.DoesNotExist())
然后我得到一个编译器错误
CS0266 无法隐式转换类型“bool?” '布尔'。存在显式转换(您是否缺少演员表?)
MyProperty 的类型是我域中的某个对象,而不是布尔值。
为什么会发生这种情况,我可以阻止它吗?
【问题讨论】:
-
if ((myObject?.MyProperty).DoesNotExist())似乎确实有效 -
@haim770 这很有趣。谢谢你,我也许可以使用它。
标签: c# compiler-errors extension-methods