Вход/Регистрация
Программирование мобильных устройств на платформе .NET Compact Framework
вернуться

Салмре Иво

Шрифт:

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

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

  • Читать дальше
  • 1
  • ...
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: