У меня есть метод расширения, который выглядит следующим образом:Почему использование ConditionalAccessExpression меняет способ работы моего метода расширения?
public static bool DoesNotExist(this object toCheck)
{
return toCheck == null;
}
обычно я использую его, как это:
if(myObject.DoesNotExist())
{
}
У меня есть выражение, которое содержит условное выражение доступа, как этот
if (myObject?.MyProperty == null)
который компилятор доволен. Если я это выражение использовать мой метод расширения, например:
if (myObject?.MyProperty.DoesNotExist())
тогда я получаю ошибку компилятора
CS0266 Не может неявно преобразовать тип "BOOL? на "bool". Явное преобразование существует (вам не хватает литой?)
Тип MyProperty - это какой-то объект из моего домена, а не bool.
Почему это происходит, и могу ли я предотвратить его?
'if ((myObject? .MyProperty) .DoesNotExist())', похоже, работает, хотя – haim770
@ haim770th это интересно. Спасибо за это, я мог бы использовать это. –