Невозможно скомпилировать метод интерфейса C# по умолчаниюC#

Место общения программистов C#
Ответить
Anonymous
 Невозможно скомпилировать метод интерфейса C# по умолчанию

Сообщение Anonymous »

В C# 8.0 появилась новая функция, позволяющая добавлять реализацию по умолчанию к методу интерфейса. Либо я делаю что-то не так, либо эта функция работает не так, как заявлено. (Я предполагаю, что это первое.)

Я создал новое консольное приложение .NET Core 3.1 со следующим кодом:

Код: Выделить всё

using System;

namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
var xxx = new MyClass { MyInt = 5 };
Console.WriteLine(xxx.GetItNow());
}
}

public interface ITest
{
int MyInt { get; set; }
int GetItNow() => MyInt * 2;
}

public class MyClass : ITest
{
public int MyInt { get; set; }
}
}
Инструкция Console.WriteLine(xxx.GetItNow())); не компилируется, поскольку


Myclass не содержит определения GetItNow()...


Итак, компилятор доволен тем фактом, что MyClass не ссылается явно на GetItNow() (он не жалуется, что MyClass не реализует интерфейс). Но он не рассматривает член интерфейса по умолчанию как открытый метод класса, реализующего интерфейс.

Я что-то упустил или что-то сломано?

Подробнее здесь: https://stackoverflow.com/questions/617 ... to-compile
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»