Chaînes Heredoc en C#

Y a-t-il une notation heredoc pour les chaînes en C#, de préférence une notation où je n'ai pas à échapper à quoi que ce soit (y compris les guillemets doubles, qui sont une bizarrerie dans les chaînes verbatim)?

41
demandé sur Aillyn 2010-08-21 22:43:35

4 réponses

Comme d'autres l'ont dit, il n'y en a pas.

Personnellement, j'éviterais de les créer en premier lieu-j'utiliserais une ressource intégrée à la place. Ils sont assez faciles à utiliser, et si vous avez une méthode utilitaire pour charger une ressource intégrée nommée à partir de l'assembly appelant en tant que chaîne (probablement en supposant un encodage UTF-8), cela signifie que:

  • Si votre document intégré est quelque chose comme SQL, XSLT, HTML etc, vous obtiendrez la coloration syntaxique car il sera vraiment un fichier SQL (etc)
  • vous n'avez pas à vous soucier de Tout s'échapper
  • vous n'avez pas à vous soucier d'indenter votre document ou de rendre votre code C# moche
  • vous pouvez utiliser le fichier de manière "normale" si cela est pertinent (par exemple, le voir comme une page HTML)
  • vos données sont séparées de votre code
56
répondu Jon Skeet 2010-08-21 19:05:20

Eh bien, même s'il ne supporte pas HEREDOC, vous pouvez toujours faire des choses comme ce qui suit en utilisant des chaînes 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);

Accroché à partir de: http://blog.luckyus.net/2009/02/03/heredoc-in-c-sharp/

38
répondu Brad Parks 2011-09-16 14:14:57

Non, il n'y a pas de littéral de chaîne de style "HEREDOC" en C#.

C# a seulement deux types de littéraux de chaîne:

  • Régulière littérale, avec de nombreuses séquences d'échappement nécessaires
  • Verbatim littérale, @-cité: doublequotes doivent être échappés par un doublement de

Références

9
répondu polygenelubricants 2010-08-21 18:58:33

Une bonne référence pour Heredoc équivalents, disponible dans différents langages de programmation sont à Rosettacode Wiki

0
répondu PM12 2018-08-11 10:20:44