Вы должны правильно выйти из своего регулярного выражения и использовать \1.\2
вместо
s/\([0-9]\{5\}\)\(.*\)/\1.\2/
Например:
$ echo '12345jpg' | sed 's/\([0-9]\{5\}\)\(.*\)/\1.\2/'
12345.jpg
Наличие реализации закрытого интерфейса в основном просто позволяет Вам реализовывать интерфейс, не имея необходимость пачкать API Вашего класса. Можно реализовать IFoo
, но только API, которые рассматривают Вас как IFoo
потребность знать это.
MSDN заявляет
Можно использовать члена парламента, не занимающего официального поста для реализации интерфейсного участника. Когда член парламента, не занимающий официального поста реализует члена интерфейса, тот участник становится доступным посредством интерфейса даже при том, что это не доступно непосредственно на переменных объекта для класса.
Я был отчасти потрясен этим. Кто-то мог объяснить, почему это работает? Хороший пример того, когда использовать его, также был бы хорош.
Это понятие в значительной степени походит на явную интерфейсную реализацию C#. Там также можно только получить доступ к участнику интерфейса при кастинге типа явно к тому интерфейсу.
Я не могу прокомментировать, почему команда платформы.NET чувствовала, что эта функция была действительно необходима все же. Это могло бы иногда усиливать инкапсуляцию, но я не уверен в этом. В любом случае что-то чрезвычайно подобное всегда было бы возможным составом использования вместо (интерфейсного) наследования.