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

на главную - закладки

Жанры

Программирование мобильных устройств на платформе .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);

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

Лекарь Империи 6

Карелин Сергей Витальевич
6. Лекарь Империи
Фантастика:
городское фэнтези
боевая фантастика
аниме
попаданцы
5.00
рейтинг книги
Лекарь Империи 6

Эволюционер из трущоб. Том 12

Панарин Антон
12. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Эволюционер из трущоб. Том 12

Вечная Война. Книга II

Винокуров Юрий
2. Вечная война.
Фантастика:
юмористическая фантастика
космическая фантастика
8.37
рейтинг книги
Вечная Война. Книга II

Страж Кодекса. Книга VI

Романов Илья Николаевич
6. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Страж Кодекса. Книга VI

Неучтенный элемент. Том 8

NikL
8. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 8

Московское золото и нежная попа комсомолки. Часть Пятая

Хренов Алексей
5. Летчик Леха
Фантастика:
попаданцы
5.00
рейтинг книги
Московское золото и нежная попа комсомолки. Часть Пятая

Лев Толстой

Шкловский Виктор Борисович
363. Жизнь замечательных людей
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Лев Толстой

Кодекс Охотника. Книга XVIII

Винокуров Юрий
18. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVIII

S-T-I-K-S. Пройти через туман

Елисеев Алексей Станиславович
Вселенная S-T-I-K-S
Фантастика:
боевая фантастика
7.00
рейтинг книги
S-T-I-K-S. Пройти через туман

Моров. Том 4

Кощеев Владимир
3. Моров
Фантастика:
фэнтези
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Моров. Том 4

Черный Маг Императора 7 (CИ)

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

Я еще не князь. Книга XIV

Дрейк Сириус
14. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я еще не князь. Книга XIV

Граф Книга третья

Первухин Андрей Евгеньевич
10. Ученик
Фантастика:
фэнтези
попаданцы
5.25
рейтинг книги
Граф Книга третья

Князь Андер Арес 3

Грехов Тимофей
3. Андер Арес
Фантастика:
рпг
аниме
фэнтези
5.00
рейтинг книги
Князь Андер Арес 3