Есть строка, в которой я заменяю значения.
Допустим, string str = "${1} ${2} ${3}"
Для замены на слова использую
if (str.Contains("${1}")) str = str.Replace("${1}", "один");
Однако, иногда встречаются такие замены, на которые нужен объект, который собирает нужную инфу. На это у него уходит большое кол-во времени.
QQ qq = getQQ();
if (str.Contains("${2}")) str = str.Replace("${2}", qq.first);
if (str.Contains("${3}")) str = str.Replace("${3}", qq.second);
Соответственно, если такие замены не требуются, то и создавать и тратить время на объект qq не нужно.
Например, при работе приложения, какая-нибудь переменная типа int i = 1 не будет создана до тех пор, пока не понадобится в работе.
А можно сказать компилятору "молодой компилятор, не задействуй строку QQ qq = getQQ(); пока она не понадобится", или что-то типа того?
Ответ
(После дискуссии в комментариях изменил ответ)
Если создание объекта дорогое, вам нужно использовать ленивую инициализацию. Проще всего получить её при помощи класса Lazy
var lazyqq = new Lazy
Объект будет создан при первом его использовании.
Если в функцию нужно передать параметры, проще всего оформить это при помощи замыкания:
var lazyqq = new Lazy
Комментариев нет:
Отправить комментарий