Чтение онлайн

на главную

Жанры

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

Салмре Иво

Шрифт:

 LessAllocationsWorkerClass workerClass1;

 workerClass1 = new LessAllocationsWorkerClass;

 int outerLoop;

 for (outerLoop = 0; outerLoop < LOOP_SIZE; outerLoop++) {

//Присвоить элементам массива значения, которые

//мы хотим использовать при тестировании

ResetTestArray(ref testArray);

int topIndex = testArray.Length - 1;

for(int idx = 0; idx <= topIndex; idx++) {

//---------------------------------------------------------

//Более
экономный способ:

//Теперь вместо повторного распределения памяти для объекта

//нам достаточно лишь повторно воспользоваться им

//Кроме того: в этом варианте реализации дополнительные

// строки НЕ создаются

//---------------------------------------------------------

//workerClass1 = new WastefulWorkerClass(

// testArray[topIndex]);

workerClass1.ReuseClass(testArray[idx]);

//Если средним словом является "blue", заменить его на "orange"

//--------------------------------------------------

//Более экономный способ:

//При таком способе сравнения не требуется создавать

//никаких дополнительных строк

//--------------------------------------------------

if (workerClass1.CompareMiddleSegment("blue") == 0) {

//Заменить средний сегмент workerClass1.MiddleSegment = "orange";

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

testArray[idx] = workerClass1.getWholeString;

}

}

 }

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

 PerformanceSampling.StopSample(2);

 System.Windows.Forms.MessageBox.Show(PerformanceSampling.GetSampleDurationText(2));

}

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

using System;

public class LessAllocationsWorkerClass {

 public string MiddleSegment {

set { m_middleSegmentNew= value; }

 }

 private string m_middleSegmentNew;

 private int m_index_1st_undscore;

 private int m_index_2nd undscore;

 private string m_stringIn;

 public void ReuseClass(string in_word) {

//----------------------------------------------

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

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

//----------------------------------------------

m_index_1st_undscore = -1;

m_index_2nd_undscore = -1;

m_middleSegmentNew= null;

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

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

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

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

if (m_index_1st_undscore == -1) {

return;

}

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

m_index 2nd_undscore = in_word.IndexOf(" ", m_index_1st_undscore + 1);

 }

 public int CompareMiddleSegment(string compareTo) {

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

if (m_index_2nd_undscore < 0) {

//Если мы сравниваем с пустой строкой,

//то это означает совпадение

if((compareTo == null) || (compareTo == "")) {return 0;}

return -1;

}

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

return System.String.Compare(

m_stringIn, m_index_1st_undscore + 1, compareTo, 0, m_index_2nd_undscore - m_index_1st_undscore -1);

 }

 public string getWholeString {

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

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

if (m_middleSegmentNew == null) {

return m_stringIn;

}

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

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);

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

Блуждающие огни 4

Панченко Андрей Алексеевич
4. Блуждающие огни
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Блуждающие огни 4

Я сделаю это сама

Кальк Салма
1. Магический XVIII век
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Я сделаю это сама

Флеш Рояль

Тоцка Тала
Детективы:
триллеры
7.11
рейтинг книги
Флеш Рояль

Боярышня Дуняша

Меллер Юлия Викторовна
1. Боярышня
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Боярышня Дуняша

Газлайтер. Том 8

Володин Григорий
8. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 8

Леди для короля. Оборотная сторона короны

Воронцова Александра
3. Королевская охота
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Леди для короля. Оборотная сторона короны

На границе империй. Том 10. Часть 1

INDIGO
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 1

Черный Маг Императора 5

Герда Александр
5. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 5

Невест так много. Дилогия

Завойчинская Милена
Невест так много
Любовные романы:
любовно-фантастические романы
7.62
рейтинг книги
Невест так много. Дилогия

Идеальный мир для Социопата 3

Сапфир Олег
3. Социопат
Фантастика:
боевая фантастика
6.17
рейтинг книги
Идеальный мир для Социопата 3

Повелитель механического легиона. Том VIII

Лисицин Евгений
8. Повелитель механического легиона
Фантастика:
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Повелитель механического легиона. Том VIII

Наследник павшего дома. Том I

Вайс Александр
1. Расколотый мир
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наследник павшего дома. Том I

Крещение огнем

Сапковский Анджей
5. Ведьмак
Фантастика:
фэнтези
9.40
рейтинг книги
Крещение огнем

Камень Книга двенадцатая

Минин Станислав
12. Камень
Фантастика:
боевая фантастика
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Камень Книга двенадцатая