powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Расширение класса string
43 сообщений из 43, показаны все 2 страниц
Расширение класса string
    #38889577
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Занимаюсь портированием кода с C++ на C#.

Возникла такая загвоздка:
Методы substring, remove, indexof и т.д. для AnsiString в Borland C++ Builder используют нумерацию с 1. Менять логику в коде очень не хочется, т.к. подобного в коде достаточно много.

Соответственно я выделил два варианта:
- Переопределить эти методы для string и просто добавлять или вычитать единицу в зависимости от операции
- Более практичный вариант: Создать класс AnsiString, который бы наследовал string и в нём переопределить эти два метода.

Но класс string запечатан и все его методы не виртуальны и не могут быть переопределены.

Реализовал в итоге при помощи расширений:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
namespace MyExtensions
{
    public static class CustomExtensions
    {
        public static int IndexOfCPP(this string str, string pattern)
        {
            return str.IndexOf(pattern) + 1;
        }
        public static int IndexOfCPP(this string str, char pattern, int startindex)
        {
            return str.IndexOf(pattern, startindex - 1) + 1;
        }

        public static string RemoveCPP(this string str, int startindex, int lenght)
        {
            return str.Remove(startindex - 1, lenght);
        }

        public static string SubstringCPP(this string str, int startindex, int lenght)
        {
            return str.Substring(startindex - 1, lenght);
        }
        
        public static string StringReplace(string S, string OldPattern, string NewPattern)
        {
            return S.Replace(OldPattern, NewPattern);
        }

        public static string StringReplace(string S, char OldPattern, char NewPattern)
        {
            return S.Replace(OldPattern, NewPattern);
        }

        public static bool IsEmpty(this string str)
        {
            return string.IsNullOrEmpty(str);
        }

        public static bool IsZero(this Single A)
        {
            return A < Single.Epsilon;
        }

    }
}


В случае использования SubstringCPP проблем нету. Но это надо во всём скопированном коде изменять Substring на SubstringCPP.
Если использовать расширение Substring, то используется стандартный substring.

Вы можете что-то посоветовать для решения проблемы?
...
Рейтинг: 0 / 0
Расширение класса string
    #38889602
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Ку.Добрый день!
Занимаюсь портированием кода с C++ на C#.

Вы можете что-то посоветовать для решения проблемы?

Поменять текстовым поиском везде. Дать только критерий поточнее - .Substring( на .SubstringCPP(
...
Рейтинг: 0 / 0
Расширение класса string
    #38889625
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Взять декомпилированный класс String из неймспейса System, заменить стандартную имплементацию на Вашу где необходимо, скомилить в новую сборку с уникальным неймспейсом и добавить референс на сборку во всех проектах где необходимо. При использовании класса String выбирать соответствующий неймспейс (ибо будет конфликт класса String из System и Вашего неймспейса). Никаких расширений не нужно.
...
Рейтинг: 0 / 0
Расширение класса string
    #38889637
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronВзять декомпилированный класс String из неймспейса System, заменить стандартную имплементацию на Вашу где необходимо, скомилить в новую сборку с уникальным неймспейсом и добавить референс на сборку во всех проектах где необходимо. При использовании класса String выбирать соответствующий неймспейс (ибо будет конфликт класса String из System и Вашего неймспейса). Никаких расширений не нужно.

Где достать декомпилированный string? Декомпилирован он третьим лицом или исходники выложены самим MS?

А есть возможность этот декомпилированный класс переименовать в ANsiString? Тогда мне в коде не надо будет менять AnsiString на strnig и конфликта наймспейсов не будет.
...
Рейтинг: 0 / 0
Расширение класса string
    #38889647
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Ку.AxeleronВзять декомпилированный класс String из неймспейса System, заменить стандартную имплементацию на Вашу где необходимо, скомилить в новую сборку с уникальным неймспейсом и добавить референс на сборку во всех проектах где необходимо. При использовании класса String выбирать соответствующий неймспейс (ибо будет конфликт класса String из System и Вашего неймспейса). Никаких расширений не нужно.

Где достать декомпилированный string? Декомпилирован он третьим лицом или исходники выложены самим MS?

А есть возможность этот декомпилированный класс переименовать в ANsiString? Тогда мне в коде не надо будет менять AnsiString на strnig и конфликта наймспейсов не будет.
И пожелать веселых денечков программеру, который это вот ваше заумствование будет поддреживать после вас...
Ах лишь бы код не менять - что за фобия?
Заодно и кривулины почистили бы - которые однозначно имеются...
...
Рейтинг: 0 / 0
Расширение класса string
    #38889663
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Ку.
Ну в самом деле - я вот работаю со стрингом - в рамках вашего проэкта.
пишу вызов функции - и вдруг она мне выдает нечто, чего я не ожидал.
Не может быть, думаю я - и начинаю копаться в своем коде - где у меня ошибка - ведь не может же быть, что в стандартном классе дотнета есть такой баг...
нумерация не с нуля а с единицы...

оказывается, это не оригинальный стринг! Авторская работа!
:-/

Поверьте, встретиться с незнакомой функцией - это одно, а догадаться, что знакомая уже не ведет себя так, как было - это совершенно другое....
...
Рейтинг: 0 / 0
Расширение класса string
    #38889715
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129,

так потому я и спршиваю где достать декомпилированный string и можно ли его переименовать в AnsiString. Тогда не будет никому никаких сюрпризов!
...
Рейтинг: 0 / 0
Расширение класса string
    #38889718
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129,

Фобия оправданна. Классы которые приходится портировать работают очень много со стрингами, массивами и т.п. В одном месте упустил сделать +1 или -1 и всё полетело в тартарары!

Тем более эти классы постоянно развивает другая команда, а моя задача вести параллель на шарпе. Отсюда и необходимость вносить минимум изменений!
...
Рейтинг: 0 / 0
Расширение класса string
    #38889723
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Ку. никаких сюрпризов!
Мне кажется, методов рассширения для этих целей - более чем достаточно.
И даже эти методы - еще не писал, но уже стер из проэкта (как раз расширение string.Replace до меня свяли) подобное.

В моем случае расширенный метод использовался только в одном месте программы. И мне показалось гораздо логичнее все нужные операции выполнить в специализированной функции, а не "всюду и со всеми"...
...
Рейтинг: 0 / 0
Расширение класса string
    #38889763
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Алексей Ку. никаких сюрпризов!
...
В моем случае расширенный метод использовался только в одном месте программы. ...

Вот и ответ. У меня они всюду и везде. Более того классов много и они наследуются друг от друга. Если мне надо было переделлать код в одном-двух местах, то я и не бы себе голову над этим!

Вообще, не очень ясно почему запретили наследовать string... Что в этом такого?
...
Рейтинг: 0 / 0
Расширение класса string
    #38889790
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129И пожелать веселых денечков программеру, который это вот ваше заумствование будет поддреживать после вас...
Ах лишь бы код не менять - что за фобия?
Заодно и кривулины почистили бы - которые однозначно имеются...

Если весь проект завязан на override String класса - это допустимо и лучшее архитектурное решение, чем натыкать Extension'ов. После переписки методов поддерживать не надо - написал unit тесты для каждого overriden метода и будет Вам счастье. Вы часто меняете сборки со статическими методами, которые вряд ли когда вообще меняются? Какие проблемы-то?
...
Рейтинг: 0 / 0
Расширение класса string
    #38889809
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Ку.D129пропущено...

...
В моем случае расширенный метод использовался только в одном месте программы. ...

Вот и ответ. У меня они всюду и везде. Более того классов много и они наследуются друг от друга. Если мне надо было переделлать код в одном-двух местах, то я и не бы себе голову над этим!

Вообще, не очень ясно почему запретили наследовать string... Что в этом такого?
Потому, что это типа "простой тип" - который как бы мало чем отличается от int или decimal.

В чем трудность заменить во всех текстах имя метода - я тоже не понимаю.
У меня бывали случаи, когда я исправлял 600 ошибок компиляции - после изменения типа на более продвинутый.
Ничего со мной не случилось - сидишь себе, втыкаешь кнопочки...
:-)


Кстати, если вы хотите наследовать стринг - ну и напишите полностью свой класс, в котором будут обертки над стрингом (или сразу уже StringBuilder ом), переопределите операторы - уж всяко это будет лучше, чем для такого же имени методов писать другую логику...
...
Рейтинг: 0 / 0
Расширение класса string
    #38889820
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129,

Там вообще никакой другой логики нет - просто 1 к индексатору прибавить в каждом методе внимательно. Там всего-то методов 100-150 с overload'ами. И большинство из них скорее всего даже трогать не надо будет. Перепутать с System.String тоже не выйдет, так как namespace для переписанного класса будет, например, SystemPlusOne.String... Все! И нативный System.String никак не пострадал - хочешь, пользуйся в этом же проекте. Для того namespac'ы и даны в .NET. Не понимаю, в чем проблема-то?
...
Рейтинг: 0 / 0
Расширение класса string
    #38889824
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129,

А все StringBuilder'ом писать - это неэффективно во многих случаях, когда количество операций со String минимально. А в большинстве методов String их количество минимально.
...
Рейтинг: 0 / 0
Расширение класса string
    #38889835
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronD129,

Там вообще никакой другой логики нет - просто 1 к индексатору прибавить в каждом методе внимательно. Там всего-то методов 100-150 с overload'ами. И большинство из них скорее всего даже трогать не надо будет. Перепутать с System.String тоже не выйдет, так как namespace для переписанного класса будет, например, SystemPlusOne.String... Все! И нативный System.String никак не пострадал - хочешь, пользуйся в этом же проекте. Для того namespac'ы и даны в .NET. Не понимаю, в чем проблема-то?

Я подобное решение и описал - в предыдущем посте.
Переопределение метода в родном классе - вот что меня напрягло.
Имя одинаковое - а неймспейс ведь покоротится с помощью using...
Хотя - вот я недавно написал класс ActionResult - правда в виндовс приложении, и он с типом из Веб не пересечется.
А что недавно пересеклось - нечто под названием Membership.....
Конечно разрулили - прямым использованием неймспейса, точным адресом...
Но если бы дали бы этой нашей шняге некий префикс - только нашенский, то и разруливать не надо было бы.
...
Рейтинг: 0 / 0
Расширение класса string
    #38889843
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Ку.так потому я и спршиваю где достать декомпилированный string и можно ли его переименовать в AnsiString. Тогда не будет никому никаких сюрпризов!
http://referencesource.microsoft.com/#mscorlib/system/string.cs
Только что вы будете делать с использованием кучи internal классов? Тоже тащить в виде исходников к себе? Или, например, с методами, которые MethodImplAttribute(MethodImplOptions.InternalCall)? Забудьте про декомпиляцию System.String вообще. Extension-методы и поиск/замена по коду.
...
Рейтинг: 0 / 0
Расширение класса string
    #38889844
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Я подобное решение и описал - в предыдущем посте.

Мне только одному кажется, что в предыдущем посте Вы предлагали что-то совсем другое?

D129Переопределение метода в родном классе - вот что меня напрягло.

Ни наследований, ни переопределений я не предлагаю. Нет, родной System.String я трогать вообще не предлагаю. Мое предложение: новый неймспейс, перенос класса String из System неймспейса в новый неймспейс SystemPlus, добавить 1 к индексатору везде где нужно в методах класса SystemPlus.String.

Когда нужно будет использовать метод класса String просто указать неймспейс: using String = SystemPlus.String;
...
Рейтинг: 0 / 0
Расширение класса string
    #38889848
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

Точно так же как System.String их тащит
...
Рейтинг: 0 / 0
Расширение класса string
    #38889849
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

Остаётся один вопрос. Как взять и перенести класс string вдругой namespace?

Видимо придётся делать как написал Сон Веры Павловны.
...
Рейтинг: 0 / 0
Расширение класса string
    #38889851
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronСон Веры Павловны,

Точно так же как System.String их тащит

Я взял тупо исходник стринга. У меня огомное кол-ва иксепшенов начиная как минимум с unsafe кода!
...
Рейтинг: 0 / 0
Расширение класса string
    #38889858
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Ку., пока Вы только знакомитесь с C#, правда, делайте лучше через Extension методы. Не мучайтесь. Так проще будет - просто сделаете Replace All и подмените имена методов на нужные. Я описал способ, которым, скорее всего, пошел бы я, если проект был бы большой и методов переписывать много. Если у Вас всего 2-3 extension метода, не стоит по воробьям из пушки.
...
Рейтинг: 0 / 0
Расширение класса string
    #38889867
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronСон Веры Павловны,

Точно так же как System.String их тащит
Вы предлагаете перетащить в проект половину mscorlib?
...
Рейтинг: 0 / 0
Расширение класса string
    #38889874
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Ку.AxeleronСон Веры Павловны,

Точно так же как System.String их тащит

Я взял тупо исходник стринга. У меня огомное кол-ва иксепшенов начиная как минимум с unsafe кода!
Сделайте обертку.
Если вам нужно "умностное" обоснование - пожалуйста:
Есть два способа повторного использования кода. Один из них - наследование. В типе string оно заблокировано.
Второй - композиция. Вам нужны функции стринга, но с коррекцией их поведения - ну и напишите эту самую коррекцию, перед вызовом неизменяемых функций...
...
Рейтинг: 0 / 0
Расширение класса string
    #38889875
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я бы хотел так сделать!

Но Сон веры павловны прав. Придётся тащить половину mscorlib. На первый взгляд всё выглдяит несложно, а оказывается всё наоборот. Класс string ни капельки не самостоятельный и использует половину mscorlib.

Тут у меня назрел такой вопрос. А почему мой новый string2 (порождённый из исзодника string) не может использовать уже скомпилированный mscorlib, чтобы его не тащить в проект?
...
Рейтинг: 0 / 0
Расширение класса string
    #38889876
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Ку.,

Ну уже я думаю что решение моего вопроса очевидно - extension`ы!
...
Рейтинг: 0 / 0
Расширение класса string
    #38889878
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Ку.Да я бы хотел так сделать!

Но Сон веры павловны прав. Придётся тащить половину mscorlib. На первый взгляд всё выглдяит несложно, а оказывается всё наоборот. Класс string ни капельки не самостоятельный и использует половину mscorlib.

Тут у меня назрел такой вопрос. А почему мой новый string2 (порождённый из исзодника string) не может использовать уже скомпилированный mscorlib, чтобы его не тащить в проект?
Потому, что есть такой модификатор доступа - internal.
...
Рейтинг: 0 / 0
Расширение класса string
    #38889888
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Алексей Ку.Да я бы хотел так сделать!

Но Сон веры павловны прав. Придётся тащить половину mscorlib. На первый взгляд всё выглдяит несложно, а оказывается всё наоборот. Класс string ни капельки не самостоятельный и использует половину mscorlib.

Тут у меня назрел такой вопрос. А почему мой новый string2 (порождённый из исзодника string) не может использовать уже скомпилированный mscorlib, чтобы его не тащить в проект?
Потому, что есть такой модификатор доступа - internal.

А ну да...
...
Рейтинг: 0 / 0
Расширение класса string
    #38889890
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Ку.,

Internal классы (структуры, интерфейсы, энумы, делегаты) видны только внутри сборки, в которой объявлены (если только сборка не скомпилирована с атрибутом InternalVisibleTo - но это точно не про mscorlib и ваш проект).
Помнится, как-то я попытался подправить исходники класса SignedXml - не вышло нифига. Как раз из-за этих internal'ов.
...
Рейтинг: 0 / 0
Расширение класса string
    #38889891
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Ку.,

Вам явно не нужны все методы оригинального класса String... У Вас я видел 3-5 метода для переписания (причем, на мой взгляд, элементарнейшие). Зря Вы заранее испугались, там совсем немного тащить надо. А для общего развития было бы полезно. Но смотрите сами, за Вас этого никто не сделает, но если Вас уже запугали и уверенности в собественных силах нет, делайте через Extensions - это проще и быстрее, а в Вашем случае, может, и оправданнее.
...
Рейтинг: 0 / 0
Расширение класса string
    #38889897
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да вообще все проще на самом деле. Просто сошлитесь на родной класс String и сделаете как-бы overraid нужных Вам методов. Даже исходников System.String не надо! Чо-то туплю я сегодня.
...
Рейтинг: 0 / 0
Расширение класса string
    #38889904
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
самый простой способ переправить код на другой тип для Билдера
объявите в каком нить хидере типа вот этого

Код: pascal
1.
2.
3.
4.
MyString = AnsyString; или назовите как хотите

string =record
end;


и включите его во все модули код которых надо переводить, попутно компиля
...
Рейтинг: 0 / 0
Расширение класса string
    #38889906
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronПросто сошлитесь на родной класс String и сделаете как-бы overraid нужных Вам методов.
Родной класс System.String является sealed, если что.
...
Рейтинг: 0 / 0
Расширение класса string
    #38889922
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныAxeleronПросто сошлитесь на родной класс String и сделаете как-бы overraid нужных Вам методов.
Родной класс System.String является sealed, если что.

Это не играет роли. Я предлагаю не наследование, а вот что:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
using System;

namespace SystemPlus
{
    public static class String
    {
         public static string Substring(this string text, int startIndex, int length)
        {
             return text.Substring(startIndex + 1, length);
        }
    }
}
...
Рейтинг: 0 / 0
Расширение класса string
    #38889945
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronЭто не играет роли. Я предлагаю не наследование, а вот что:
Это, собственно, и есть extension-методы, про которые топикстартер писал с самого начала. Вы предлагаете ему то, что он сам себе предложил? Это во-первых. А во-вторых, с вышеприведенной сигнатурой это просто не будет работать:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
namespace test
{
  class Program
  {
    static void Main(string[] args)
    {
      Console.WriteLine("1234".Substring(0,1));
      Console.ReadKey(true);
    }
  }

  public static class String
  {
    public static string Substring(this string text, int startIndex, int length)
    {
      return text.Substring(startIndex + 1, length);
    }
  }
}


Прогоните этот код с закомментаренным public static class String, и с незакомментаренным, найдите отличия. Если что - компилятор в первую очередь по сигнатуре вызова ищет инстансные методы, и только не найдя их, начинает искать extensions-методы.
...
Рейтинг: 0 / 0
Расширение класса string
    #38889965
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

Ваша правда!
...
Рейтинг: 0 / 0
Расширение класса string
    #38889980
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все, убедили Вы меня - лучше всего просто Extension methods использовать без извратов.
...
Рейтинг: 0 / 0
Расширение класса string
    #38889994
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

лучше говнокод переписать
...
Рейтинг: 0 / 0
Расширение класса string
    #38889997
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилAxeleron,

лучше говнокод переписать

Ну это уже меры глобального порядка
...
Рейтинг: 0 / 0
Расширение класса string
    #38890049
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Огромное спасибо всем за помощь в этом вопросе!
...
Рейтинг: 0 / 0
Расширение класса string
    #38890676
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Ку.Тем более эти классы постоянно развивает другая команда, а моя задача вести параллель на шарпе. Отсюда и необходимость вносить минимум изменений!Может проще сибилдерную часть оформить в виде DLL или COM и подсоединить к сишарпу инвоком/интеропом?
...
Рейтинг: 0 / 0
Расширение класса string
    #38890680
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

Не, проще последовать совету Изопропила.
...
Рейтинг: 0 / 0
Расширение класса string
    #38891030
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На правах не сильно продуманной идеи:

Завернуть стринг в структуру и переопределить метходы работы со структурой.
Код: c#
1.
2.
3.
4.
5.
struct AnsiString
{
  private string str;
  public int IndexOf(AnsiString s) { return str.IndexOf(s.str) + 1; }
}
...
Рейтинг: 0 / 0
Расширение класса string
    #38896933
Leo Лапыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На самом деле делай, Алексей, класс AnsiString с внутренним членом класса String и реализуй в нём (AnsiString) только то, что используется классами, портируемыми из C++, в частности метод Substring, ещё пару-тройку каких-нибудь типа Pos и SetLength, ну и операторы +, -, =, ==, != или какие там используются...
...
Рейтинг: 0 / 0
43 сообщений из 43, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Расширение класса string
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]