Читаем Программирование мобильных устройств на платформе .NET Compact Framework полностью

   If (workerClass1.CompareMiddleSegment("blue") = 0) Then

    'Заменить средний сегмент

    workerClass1.MiddleSegment = "orange"

    'Заменить слово

    testArray(idx) = workerClass1.getWholeString

   End If

  Next 'внутренний цикл

 Next 'внешний цикл

 'Остановить секундомер!

 PerformanceSampling.StopSample(2)

 MsgBox(PerformanceSampling.GetSampleDurationText(2))

End Sub

Листинг 8.8. Рабочий класс для третьего тестового примера

Option Strict On

Imports System


Public Class LessAllocationsWorkerClass

Public WriteOnly Property MiddleSegment As String

 Set(ByVal Value As String)

  m_middleSegmentNew = Value

 End Set

End Property


Private m_middleSegmentNew As String

Private m_index_1st_undscore As Integer

Private m_index_2nd_undscore As Integer

Private m_stringIn As String


Public Sub ReuseClass(ByVal in_word As String)

 '----------------------------------------------

 'Для повторного использования класса необходимо

 'полностью очистить внутреннее состояние

 '----------------------------------------------

 m_index_1st_undscore = -1

 m_index_2nd_undscore = -1

 m_middleSegmentNew = Nothing

 m_stringIn = in_word 'Это не приводит к созданию копии строки


 'Осуществляем поиск символов подчеркивания ("_") в строке

 m_index_1st_undscore = in_word.IndexOf("_", 0)


 'В случае отсутствия символов "_" все, что нам нужно, это первый сегмент

 If (m_index_1st_undscore = -1) Then

  Return

 End If


 'Найти второй символ "_"

 m_index_2nd_undscore = in_word.IndexOf("_", _

  m_index_1st_undscore + 1)

End Sub


Public Function CompareMiddleSegment(ByVal compareTo As String) As Integer

 'В случае отсутствия второго символа "_" отсутствует и средний сегмент

 If (m_index_2nd_undscore < 0) Then

  'Если мы сравниваем с пустой строкой, то это означает

  'совпадение

  If ((compareTo = Nothing) OrElse (compareTo = "")) Then

   Return 0

  End If


  Return -1

 End If


 'Сравнить средний сегмент с первым и вторым сегментами

 Return System.String.Compare(m_stringIn, m_index_1st_undscore + 1, _

  compareTo, 0, _

  m_index_2nd_undscore - m_index_1st_undscore - 1)

End Function


Public Function getWholeString As String

 'Если полученный средний сегмент не является новым,

 'возвратить исходный сегмент

 If (m_middleSegmentNew = Nothing) Then

  Return m_stringIn

 End If


 'Создать возвращаемую строку

 Return m_stringIn.Substring(0, m index_1st_undscore + 1) + _

  m_middleSegmentNew + m_stringIn.Substring( _

  m_index_2nd_undscore, _

  m_stringIn.Length - m_index_2nd_undscore)

End Function

End Class

Листинг 8.9. Сравнение эффективности использования строк и класса stringBuilder в алгоритмах

Const COUNT_UNTIL As Integer = 300

Const LOOP_ITERATIONS As Integer = 40

'---------------------------------------------------------

Перейти на страницу:

Похожие книги

Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

Эндрю Хант , Дэвид Томас , А. Алексашин

Программирование / Книги по IT
Разработка ядра Linux
Разработка ядра Linux

В книге детально рассмотрены основные подсистемы и функции ядер Linux серии 2.6, включая особенности построения, реализации и соответствующие программны интерфейсы. Рассмотренные вопросы включают: планирование выполнения процессов, управление временем и таймеры ядра, интерфейс системных вызовов, особенности адресации и управления памятью, страничный кэш, подсистему VFS, механизмы синхронизации, проблемы переносимости и особенности отладки. Автор книги является разработчиком основных подсистем ядра Linux. Ядро рассматривается как с теоретической, так и с прикладной точек зрения, что может привлечь читателей различными интересами и потребностями.Книга может быть рекомендована как начинающим, так и опытным разработчикам программного обеспечения, а также в качестве дополнительных учебных материалов.

Роберт Лав

Программирование, программы, базы данных / Программирование / Книги по IT