C# Перенос строки в коде (символы @ и +)

Дано: текст кода на языке C#
Задача: перенести длинные строки на новую строку для улучшения визуального удобства чтения кода.

Если это длинная строка, содержащая определенный набор команд, то перенос можно сделать обычным нажатием Enter - дополнительных спецсимволов не требуется. В синтаксисе языка C# разрешается разносить команды на разные строки, однако не разрывая имен.
Например, есть следующие строки кода:


if ((level != "0") & ((dtDepartments.Rows.Count > 0) | (dtMembersPhone.Rows.Count > 0)))
        {
            strDepartmentsHTML = strDepartmentParentNameContaner.Replace("%level%", (int.Parse(level) + 1).ToString()).Replace("%ParentName%", ParentName) + strDepartmentsHTML;
        }

Их можно разбить, например, так:

if ((level != "0") &
            ((dtDepartments.Rows.Count > 0) |
            (dtMembersPhone.Rows.Count > 0)))
        {
            strDepartmentsHTML =
                strDepartmentParentNameContaner
                .Replace("%level%",
                (int.Parse(level) + 1).ToString())
                .Replace("%ParentName%", ParentName)
                + strDepartmentsHTML;
        }


Если же нужно разбить строковую переменную, то тут может быть 2 основных варианта.
Например, дана такая строка:

SELECT TOP 1 dep.intID,
(SELECT cast(it.intNumber as nvarchar) + ',' as 'data()'
  FROM tblLinkDepartmentInTel lin INNER JOIN tblInTel it ON lin.intIDIntel = it.intID
  where lin.intIDDepartmet = dep.intID AND (lin.blnPublish = 1)
  order by it.intNumber
  for xml path('')) AS InTel,
(SELECT et.strNumber + ',' as 'data()'
  FROM tblLinkDepartmentExTel let INNER JOIN
                         tblExTel et ON let.intIDExtel = et.intID
  where let.intIDDepartmet = dep.intID and let.blnPublish = 1
  order by et.strNumber
  for xml path('')) AS ExTel
FROM tblDepartment dep
WHERE dep.intID = 2

Вариант 1, мультистрока с "@" - просто перед присвоением строки ставим символ @:
Например,

DataTable dtDepartments = new DataTable();
string strSQL = @"SELECT TOP 1 dep.intID,
            (SELECT cast(it.intNumber as nvarchar) + ',' as 'data()'
                  FROM tblLinkDepartmentInTel lin INNER JOIN tblInTel it
                        ON lin.intIDIntel = it.intID
                  where lin.intIDDepartmet = dep.intID AND (lin.blnPublish = 1)
                  order by it.intNumber
                  for xml path('')) AS InTel,
            (SELECT et.strNumber + ',' as 'data()'
                  FROM tblLinkDepartmentExTel let INNER JOIN
                                         tblExTel et ON let.intIDExtel = et.intID
                  where let.intIDDepartmet = dep.intID and let.blnPublish = 1
                  order by et.strNumber
                  for xml path('')) AS ExTel
            FROM tblDepartment dep WHERE dep.intID = @strDepartmentID";

Вариант 2, конкатенация с "+" - разбиваем строку на части и применяем стандартную конкатенацию:

DataTable dtDepartments = new DataTable();
string strSQL = "SELECT TOP 1 dep.intID, " +
    "(SELECT cast(it.intNumber as nvarchar) + ',' as 'data()'  " +
            "FROM tblLinkDepartmentInTel lin INNER JOIN tblInTel it " +
            "      ON lin.intIDIntel = it.intID" +
            "where lin.intIDDepartmet = dep.intID AND (lin.blnPublish = 1)" +
            "order by it.intNumber" +
            "for xml path('')) AS InTel," +
    "(SELECT et.strNumber + ',' as 'data()'  " +
            "FROM tblLinkDepartmentExTel let INNER JOIN" +
                                    "tblExTel et ON let.intIDExtel = et.intID" +
            "where let.intIDDepartmet = dep.intID and let.blnPublish = 1" +
            "order by et.strNumber" +
            "for xml path('')) AS ExTel" +
    "FROM tblDepartment dep WHERE dep.intID = @strDepartmentID";

(с) Ella S.
Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.

3 комментария :