Невозможно использовать методы интерфейса по умолчанию - PullRequest
0 голосов
/ 09 декабря 2018

Я установил новую версию Visual Studio и установил проект на C # 8. Когда я попытался использовать новую функцию интерфейса, как показано ниже, она сказала, что я не могу реализовать в интерфейсе, который, похоже, не может использовать новую функцию.Кто-нибудь может объяснить, почему, это все еще не включено в предварительный просмотр 2019 года?

interface IDefaultInterfaceMethod
{
    public void DefaultMethod()
    {
        Console.WriteLine("I am a default method in the interface!");
    }
}

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Методы интерфейса по умолчанию недоступны в .NET Core 3.0 Preview 1. Это действительно preview preview - даже асинхронные перечисления не будут работать без некоторых ручных исправлений.Команда Roslyn решила выпустить предварительный просмотр , хотя некоторые вещи не сработают:

Должны ли мы сказать пользователям пропустить эту функцию до предварительного просмотра 2?

Это предварительный просмотр, а не RTM.Если мы просим пользователей пропускать функции предварительного просмотра, потому что у них есть ошибки, мы должны просто полностью прекратить отправку предварительных просмотров.101

Реализации интерфейса по умолчанию доступны для экспериментов через SharpLab.io .Этот сайт показывает, как работает компилятор, отображая C #, IL или код сборки, сгенерированный компилятором для любого примера.

Sharplab.io позволяет использовать множество различных экспериментальных компиляторов.Параметр Default Interface Methods может скомпилировать этот пример:

interface IDefaulter
{
    int GoBust()=>0;
}

Обратите внимание на дату - этот компилятор не обновлялся со 2 апреля 2018 года. Функции, выпущенные в Preview 1, были последним обновлением в октябре 2018 года.

0 голосов
/ 09 декабря 2018

На основе this :

Microsoft предоставила более подробную информацию о C # версии 8.0, следующем запланированном основном выпуске языка.Ожидается, что C # 8.0 появится в 2019 году, одновременно с выходом .Net Core 3.0.

Все функции C # 8 все еще находятся на ранней стадии разработки и могут измениться.Поэтому было бы лучше подождать, пока функции не окажутся в финальной версии.Также может быть полезен следующий блог:

Любая оценка даты выпуска C # 8.0?

Не все функции C # 8.0 еще доступны (предварительный просмотр 1 Visual Studio 2019),Вы можете найти список текущих доступных функций по следующей ссылке:

Взять C # 8.0 для вращения

...