Книга: Программирование мобильных устройств на платформе .NET Compact Framework
Листинг 8.8. Рабочий класс для третьего тестового примера
Листинг 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.1. Применение отложенной загрузки, кэширования и освобождения графических ресурсов
- Листинг 8.2. Общий код, используемый во всех приведенных ниже вариантах тестов
- Листинг 8.3. Тестовый пример, демонстрирующий неэкономное распределение памяти (типичный первоначальный вариант реализации интересующей нас функции)
- Листинг 8.4. Рабочий класс для первого тестового примера
- Листинг 8.5. Тестовый пример, демонстрирующий уменьшение объема памяти, распределяемой для объектов (типичный образец улучшения первоначального варианта реализации интересующей нас функции)
- Листинг 8.6. Рабочий класс для второго тестового примера
- Листинг 8.7. Тестовый пример, демонстрирующий значительное уменьшение объема памяти, распределяемой для объектов (типичный образец существенной алгоритмической оптимизации первоначального варианта реализации интересующей нас функции)
- Листинг 8.8. Рабочий класс для третьего тестового примера
- Листинг 8.9. Сравнение эффективности использования строк и класса stringBuilder в алгоритмах
- Листинг 10.1. (simpleid.c) Отображение идентификаторов пользователя и группы
- 6.4. Рабочий лист Excel и его структурные элементы
- Листинг 15.11. Код для загрузки файла с Web-сервера
- Delphi. Учимся на примерах
- Как установить любимую фотографию на Рабочий стол?
- Возможно ли, чтобы при создании нового пользователя для него уже был настроен Рабочий стол?
- Листинг 3.1. Конфигурационный файл lilo.conf
- Листинг 3.2. Файл настройки программы inittab
- Листинг 3.3. Файл
- Листинг 3.4. Информация о конфигурации и состоянии сети
- Листинг 4.1. Файл
- Листинг 4.2. Содержимое конфигурационного файла