Строки Heredoc в C # - PullRequest
       5

Строки Heredoc в C #

44 голосов
/ 21 августа 2010

Есть ли в C # нотация heredoc, предпочтительно та, в которой мне не нужно экранировать что-нибудь (включая двойные кавычки, которые являются причудами в дословных строках)?

Ответы [ 4 ]

57 голосов
/ 21 августа 2010

Как уже говорили другие, нет.

Лично я бы не стал создавать их в первую очередь - вместо этого я бы использовал встроенный ресурс.С ними довольно легко работать, и если у вас есть служебный метод для загрузки именованного встроенного ресурса из вызывающей сборки в виде строки (возможно, с использованием кодировки UTF-8), это означает, что:

  • Если ваш встроенный документ представляет собой что-то вроде SQL, XSLT, HTML и т. Д., Вы получите подсветку синтаксиса, потому что он действительно будет файлом SQL (и т. Д.)
  • Вам не нужно беспокоиться о любой экранирование
  • Вам не нужно беспокоиться о том, чтобы сделать отступ в документе или сделать код C # уродливым
  • Файл можно использовать «обычным» способомесли это уместно (например, просмотрите его как HTML-страницу)
  • Ваши данные отделены от вашего кода
42 голосов
/ 16 сентября 2011

Ну, хотя он не поддерживает HEREDOC, вы все равно можете делать что-то вроде следующего, используя строки Verbatim:

string miniTemplate = @"

  Hello ""{0}"",

  Your friend {1} sent you this message:

     {2}

  That's all!";

string populatedTemplate = String.Format(miniTemplate, "Fred", "Jack", "HelloWorld!");

System.Console.WriteLine(populatedTemplate);

Получено от: http://blog.luckyus.net/2009/02/03/heredoc-in-c-sharp/

10 голосов
/ 21 августа 2010

Нет, в C # нет строкового литерала стиля "HEREDOC".

C # имеет только два типа строковых литералов:

  • Обычный литерал, со многими необходимыми escape-последовательностями
  • Дословно буквально, @ в кавычках: двойные кавычки необходимо экранировать путем удвоения

Ссылки

0 голосов
/ 11 августа 2018

Хороший справочник для Heredoc эквивалентов, доступных на разных языках программирования, по адресу Rosettacode Wiki

...