Согласно статье «Как: объединить несколько строк (Руководство по программированию в C #)» * строковые литералы и строковые константы будут объединены в одну строку во время компиляции. Далее говорится, что строковые переменные могут быть объединены только во время выполнения.
У меня есть только строковые литералы и константы значений перечисления, но у меня есть немного более сложный сценарий, в котором они сочетаются с двумя вызовами статических методов. Для удобства чтения и удобства я объявляю статическую строку, содержащую SQL, как показано в следующем примере:
private enum StatGroup
{
Test,
...
}
private static string TestSql =
Regex.Replace(
String.Format(
@"INSERT INTO StatCounts (StatGroup, LinkStatus, LinkCount)
SELECT '{0}', LinkStatus, COUNT(*)
FROM LinkInfo
GROUP BY LinkStatus",
StatGroup.Test),
@"\s+", " ", RegexOptions.Multiline),
Я использую String.Format (), чтобы использовать перечисление для вставки допустимых значений в столбец таблицы StatGroup
. Я использую Regex, чтобы удалить ненужные пробелы в сценарии SQL. Пробелы не требуются во время выполнения, но хорошо служат для удобочитаемости кода.
Достаточно ли умен компилятор, чтобы оптимизировать вышесказанное во время компиляции?