Несколько советов по оптимизации C# приложений
Использование класса StringBuilder
При работе с большими строками (текстом) лучше пользоваться классом StringBuilder, а не методами класса String:
StringBuilder builder = new builder.Append("This is my first stringbuilder program"); builder.AppendLine(); builder.Append("I am appending here").AppendLine(); string appendString = builder.ToString();
Сравнение строк, не учитывая регистр
Сравнивать строки можно несколькими способами:
str1.ToLower() == str2.ToLower()
Или так:
string.Compare(str1, str2, true) == 0 //Не учитываем регистр
Или таким образом:
str1.Equals(str2, StringComparison.OrdinalIgnoreCase)
Лучше использовать последних два варианта, так как первый требует больше производительности.
Использование String.Empty
Вместо
string str = "";
необходимо использовать
string str = string.Empty;
На производительность это никак не влияет, но рекомендуют использовать второй вариант.
Использование List вместо ArrayList
ArrayList необходимо использовать только в крайних случаях, вместо него нужно использовать List
ArrayList intList = new ArrayList(); List<int> intList = new List<int>();
Использование операторов && и ||
Например вместо выражения
if (obj != null) if (obj.GetValue() == 1) { // some logic }
правильней писать
if (obj != null && obj.GetValue() == 1) { // some logic }
Если первое выражение - false, то второе не выполнится.
Преобразование типов
Вместо выражения
SomeObj obj = (SomeObj)this.FindControl("myControl");
необходимо использовать
SomeObj obj = this.FindControl("myControl") as SomeObj; if (obj != null) { // some logic }
Если myControl не типа SomeObj, то в первом случае будет выдано исключение. Во втором случае obj будет равно null.
Кроме того, можно использовать оператор is для сравнения типов:
if (obj is string) { // some logic }
Использование оператора ?
Для простых вариантов вместо if... else... можно использовать оператор ?. Выражение
string str = (enabled) ? "true" : "false";
равнозначно:
string str = string.Empty; if (enabled) str = "true"; else str = "false";
но занимает меньше места.
Использование оператора ??
Выражение:
string str = (obj) ?? string.Empty;
равнозначно:
string str; if (obj == null) str = strig.Empty; else srt = obj;
Проверка строки на null
Правильный вариант:
if (string.IsNullOrEmpty(str))
вместо
if (str == null)
Я остановился на простых вариантах оптимизации кода, частично использовал материал этой статьи.
P.S. Если у вас есть свои варианты оптимизация кода, пишите в комментраиях.