Cuerdas Heredoc en Do#


¿Hay una notación heredoc para las cadenas en C#, preferiblemente una en la que no tenga que escapar nada (incluidas las comillas dobles, que son una peculiaridad en las cadenas literales)?

Author: Aillyn, 2010-08-21

4 answers

Como otros han dicho, no la hay.

Personalmente evitaría crearlos en primer lugar, sin embargo, usaría un recurso incrustado en su lugar. Es bastante fácil trabajar con ellos, y si tiene un método de utilidad para cargar un recurso incrustado con nombre desde el ensamblado que llama como una cadena (probablemente asumiendo la codificación UTF-8) significa que:

  • Si su documento incrustado es algo como SQL, XSLT, HTML, etc. obtendrá resaltado de sintaxis porque realmente será un archivo SQL (etc)
  • Usted no tiene que preocuparse por cualquier escapar
  • No necesita preocuparse por sangrar su documento o hacer que su código C# se vea feo
  • Puede usar el archivo de una manera" normal " si eso es relevante (por ejemplo, verlo como una página HTML)
  • Sus datos están separados de su código
 56
Author: Jon Skeet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-21 19:05:20

Bueno, aunque no es compatible con HEREDOC, aún puedes hacer cosas como las siguientes usando cadenas textuales:

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);

Enganchado desde: http://blog.luckyus.net/2009/02/03/heredoc-in-c-sharp /

 38
Author: Brad Parks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-16 14:14:57

No, no hay un literal de cadena de estilo "HEREDOC" en C#.

C # tiene solo dos tipos de literales de cadena:

  • Regular literal, con muchas secuencias de escape necesarias
  • Verbatim literal, @ - quoted: doublequotes need to be escaped by doubling

Referencias

 9
Author: polygenelubricants,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-21 18:58:33

Una buena referencia para Heredoc equivalentes, disponibles en diferentes lenguajes de programación están en Rosettacode Wiki

 0
Author: PM12,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-11 10:20:44