Программирование мобильных устройств на платформе .NET Compact Framework (Салмре) - страница 539

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

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

> '----------------------------------------------

> 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

>'---------------------------------------------------------

>'НЕ ОЧЕНЬ ЭФФЕКТИВНЫЙ АЛГОРИТМ!

>'Для имитации создания типичного набора строк используются

>'обычные строки

>'---------------------------------------------------------

>Private Sub Button1_Click(ByVal sender As System.Object, _

> ByVal e As System.EventArgs) Handles Button1.Click

> 'Вызвать сборщик мусора, чтобы тест

> 'начинался с чистого состояния.

> 'ПРИБЕГАЙТЕ К ЭТОЙ МЕРЕ ТОЛЬКО В ЦЕЛЯХ ТЕСТИРОВАНИЯ! Вызовы

> 'сборщика мусора в программах вручную будут приводить к снижению

> 'общей производительности приложений!

> System.GC.Collect()

> Dim numberToStore As Integer


> PerformanceSampling.StartSample(0, "StringAllocaitons")

> Dim total_result As String

> Dim outer_loop As Integer


> For outer_loop = 1 To LOOP_ITERATIONS

>  'Сбросить старый результат