Расширение набора базовых классов .NET Framework - Изменяемые строки

ОГЛАВЛЕНИЕ

 

Изменяемые строки

Как известно, строки в .NET являются неизменяемыми объектам. Каждый раз, когда что-либо добавляется или изменяется в строке, на самом деле создается новый экземпляр класса System.String. Для интенсивной работы со строками предназначен класс StringBuilder из пространства имен System.Text. В AcedUtils вводится класс AcedStringBuilder, который можно использовать вместо или в дополнение к StringBuilder. От стандартного он отличается большей функциональностью и производительностью. Пример:

private void Test()
{
AcedStringBuilder sb = new AcedStringBuilder("Next is the E");
// "Next is the E"
sb.Paste(0, 4, "First");
// "First is the E"
sb.Append(" Last");
// "First is the E Last"
sb.Move(12, 5, 2);
// "First E is the Last"
sb.Exchange(0, 5, 15, 4);
// "Last E is the First"
sb.Reverse(7, 2);
// "Last E si the First"
sb.AppendNewLine().Append(257, 8, true);
// "Last E si the First"
// "00000101"
MessageBox.Show(sb.ToString());
if (sb.Equals(7, "si", 0, 2))
{
MessageBox.Show("OK");
}
}

По комментариям видно, как изменяется значение строки sb. Вызов sb.Append(257, 8, true) добавляет к строке число 257, записанное минимум 8 знаками в шестнадцатеричной кодировке. Если бы последний параметр при вызове был равен False, добавилась бы строка: "00000257". Метод AcedStringBuilder.Equals() предназначен для быстрой проверки равенства строк или их фрагментов без учета регистра символов.

Другие возможности

В классе Aced.G собраны функции различного назначения. Здесь есть методы для расчета контрольной суммы CRC32, округления денежных сумм до рублей и тысяч, преобразования значения из одного типа в другой, перевода значений в шестнадцатеричную кодировку или в Base85 и обратно. Кроме того, в этом классе находятся оптимизированные методы для работы с массивами значений типа Int32, UInt32, Char.

Еще одним полезным классом является AcedUI. Свойство AcedUI.UseXpTheme позволяет определить версию библиотеки comctl32.dll, используемой данным приложением. Если свойство возвращает True, загружена версия 6.0 или выше этой библиотеки. Это означает, что в приложении могут использоваться темы Windows XP. Если свойство возвращает False, используется более ранняя версия comctl32.dll и темы Windows XP недоступны.

Заключение

В статье кратко рассмотрены классы, входящие в состав сборки AcedUtils, дополняющей стандартный набор классов .NET Framework. В исходном коде, прилагаемом к статье, в начале каждого файла есть информация о назначении, свойствах и методах классов, описанных в данном файле. Эта информация может использоваться для более подробного ознакомления с возможностями, реализованными в AcedUtils.