Программирование мобильных устройств на платформе .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);
Поделиться:
Популярные книги
Последний Паладин. Том 8
8. Путь Паладина
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Газлайтер. Том 26
26. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мы друг друга не выбирали
1. Мы выбираем...
Любовные романы:
остросюжетные любовные романы
прочие любовные романы
современные любовные романы
5.00
рейтинг книги
Неучтенный элемент. Том 4
4. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Светлейший князь
4. Император и трубочист
Фантастика:
героическая фантастика
альтернативная история
5.00
рейтинг книги
Дочь моего друга
2. Айдаровы
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Родословная. Том 1
1. Линия крови
Фантастика:
городское фэнтези
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Неучтенный элемент. Том 2
2. Антимаг. Вне системы
Фантастика:
городское фэнтези
фэнтези
5.00
рейтинг книги
Черный Маг Императора 15
15. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
сказочная фантастика
фэнтези
фантастика: прочее
5.00
рейтинг книги
Княжья Русь
6. Варяг
Приключения:
исторические приключения
9.04
рейтинг книги
Мастер 3
3. Мастер
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 17
17. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Часограмма
5. Часодеи
Детские:
детская фантастика
9.43
рейтинг книги
Неучтенный элемент. Том 8
8. Антимаг. Вне системы
Фантастика:
фэнтези
5.00