Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Как бы я сделал extension classes в C#

Автор Алексей Гринь, марта 14, 2012, 23:45

0 Пользователи и 1 гость просматривают эту тему.

Алексей Гринь

Авторы C# реализовали так:

    public static class StringExtensions
    {
        public static int WordCount(this String str)
        {
            return str.Split(new char[] { ' ', '.', '?' },
                             StringSplitOptions.RemoveEmptyEntries).Length;
        }
    }   


А мне сегодня пришла в голову идея, что можно было бы реализовать так:

    public static class ExtendedString: String
    {
        public int WordCount()
        {
            return this.Split(new char[] { ' ', '.', '?' },
                             StringSplitOptions.RemoveEmptyEntries).Length;
        }
    }   


По спецификации статический класс и так не мог наследовать другой класс:
ЦитироватьA static class may not include a class-base specification (§10.1.4) and cannot explicitly specify a base class or a list of implemented interfaces.
так что эту идиому можно было бы переосмыслить как "экстеншн-класс".

Плюс в том, что используем обычный this при обращении к полям и методам (публичным), и выглядит всё естественнее. Минус в том, что больше магии и меньше понимания, чё происходит.
肏! Τίς πέπορδε;

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

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр