Реализация класса `как` класса String` - PullRequest
1 голос
/ 16 августа 2011

Я хочу реализовать класс, т.е. у нас есть класс String в .Net. В этом, если вы проверите, когда мы кодируем ....

C #:

String strString = "Value-12346- .";
String[] strArray = strString.Substring(0, strString.Length - 1).TrimEnd().ToUpper().Split("-".ToCharArray());

в этом примере, если вы проверяете, что мы вызываем несколько функций класса String, для каждой функции, т. Е. Для Substring вызывается функция TrimEnd и для TrimEnd Split вызывается функция. Я хотел бы реализовать подобное. Пожалуйста, помогите мне.

Большое спасибо !!!

Ответы [ 2 ]

3 голосов
/ 16 августа 2011

Убедитесь, что каждый метод возвращает объект того же типа (или типа, который вы хотите), а затем вы можете вызывать методы для объекта (каскадного или цепочечного).Каждый из приведенных выше методов в примере строки возвращает новую строку (обратите внимание, что строки здесь неизменны), поэтому вы можете снова применить строковые функции и т. Д.

В соответствующей заметке посмотрите, как работает Fluent Interface,Пример C #, показывающий не беглый и свободный API, является хорошим примером: http://en.wikipedia.org/wiki/Fluent_interface

public IConfigurationFluent SetColor(string newColor)
        {
            this.color = newColor;
            return this;
        }
0 голосов
/ 16 августа 2011

Как указывалось выше в manojlds, вы достигаете этого, заставляя методы-члены вашего класса возвращать тип их класса-владельца.Теперь, в частности, методы String каждый раз возвращают новый экземпляр строки (вместо «изменения» источника и его возврата), поэтому вы можете захотеть в своих методах создать глубокую копию «this», а затем внести любые изменения вновый объект и вернуть его.Кроме того, класс String является неизменяемым.

Извините за слишком подробную информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...