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

>Option Strict

>On Imports System


>Public Class LessWastefulWorkerClass

>Private m_beginning_segment As String

>Public Property BeginSegment() As String

> Get

>  Return m_beginning_segment

> End Get

> Set(ByVal Value As String)

>  m_beginning_segment = Value

> End Set

>End Property


>Private m_middle_segment As String

>Public Property MiddleSegment() As String

> Get

>  Return m_middle_segment

> End Get

> Set(ByVal Value As String)

>  m_middle_segment = Value

> End Set

>End Property


>Private m_end_segment As String

>Public Property EndSegment() As String

> Get

>  Return m_end_segment

> End Get

> Set(ByVal Value As String)

>  m_end_segment = Value

> End Set

>End Property


>Public Sub ReuseClass(ByVal in_word As String)

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

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

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

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

> m_beginning_segment = ""

> m_middle_segment = ""

> m_end_segment = ""


> Dim index_segment1 As Integer


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

> index_segment1 = in_word.IndexOf("_", 0)


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

> If (index_segment1 = -1) Then

>  m_beginning_segment = in_word

>  Return

> Else

>  'Если присутствует символ "_", отсечь его

>  If (index_segment1 = 0) Then

>  Else

>   m_beginning_segment = in_word.Substring(0, _

>    index_segment1)

>  End If

>  Dim index_segment2 As Integer

>  index_segment2 = in_word.IndexOf("_", index_segment1 + 1)

>  If (index segment2 = -1) Then

>   m_end_segment = in_word.Substring(index_segment1 + 1)

>   Return

>  End If


>  'Установить последний сегмент

>  m_middle_segment = in_word.Substring(index_segment1 + 1, _

>   index_segment2 - index_segment1 - 1)

>  m_end_segment = in_word.Substring(index_segment2 + 1)

> End If

>End Sub


>Public Function getWholeString() As String

> Return m_beginning_segment + " " + m_middle_segment + " " + _

>  m_end_segment

>End Function

>End Class

Листинг 8.7. Тестовый пример, демонстрирующий значительное уменьшение объема памяти, распределяемой для объектов (типичный образец существенной алгоритмической оптимизации первоначального варианта реализации интересующей нас функции)

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

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

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

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

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

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

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

> System.GC.Collect()


> Dim testArray() As String = Nothing