Я смотрел Visual C 14 CTP вместе с С# 6.0 и играл с оператором распространения пустоты.
Однако я не мог найти, почему следующий код не компилируется. Функции еще не задокументированы, поэтому я не уверен, что это ошибка или методы расширения просто не поддерживаются оператором ?.
, а сообщение об ошибке вводит в заблуждение.
class C
{
public object Get()
{
return null;
}
}
class CC
{
}
static class CCExtensions
{
public static object Get(this CC c)
{
return null;
}
}
class Program
{
static void Main(string[] args)
{
C c = null;
var cr = c?.Get(); //this compiles (Get is instance method)
CC cc = null;
var ccr = cc?.Get(); //this doesn't compile
Console.ReadLine();
}
}
Сообщение об ошибке:
"ConsoleApplication1.CC" не содержит определения для "Get" и не может быть найден метод расширения "Get", принимающий первый аргумент типа "ConsoleApplication1.CC" (вам не хватает директивы using или ссылки на сборку? )