Наткнулся на еще одно новшество новой редакции языка под названием Extension Everything
(Имхо спорное).
С точки зрения синтаксиса, что не нужно иметь статический класс, вроде, прикольно.
Однако теперь, как я понимаю, позволяетется, расширять абсолютно все:
extension MyPersonExtension extends Person
{
public int CountFingers()
{
this. // it call the current instance of Person
}
}
extension MyPersonExtension extends Person
{
public int NumberOfFingers()
{
get { ... }
}
}
extension MyPersonExtension extends Person
{
static int ... // You can add static things
}
Как видно в примере добавляются новые поля в класс.
Собственно, вопрос: Зачем это нужно, если в таком случае правильнее сделать наследование?
Если эта штука позволяет еще и запечатанные классы расширять, то это же противоречит инкапсуляции..
Это логичное продолжение подхода extension, позволяя описывать в расширениях не только методы, но и свойства, а так же статические поля.
Как и в случае с extensions сейчас - исходный класс НЕ меняется. Так что никаких проблем с инкапсуляцией нет, как их нет сейчас с использованием extensions.
Кроме того, в вопросе не упомянуто еще одна возможность: указывать что класс имплементирует нужный интерфейс
extension MyPersonExtension extends Person : IEmployee // The Person class implements now the IEmployee interface in your assembly
{
[ ... ]
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Я пытаюсь написать программу, которая будет играть список воспроизведения HLSДля примера, имеется ссылка на интернет радио: https://digitacdn
Данный код не работает, может кто нибуть подскажет куда копать