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)?
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
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/
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
- csharpindepth.com - articles généraux-chaînes
-
MSDN - Programmeur C# de Référence - les Chaînes de
Chaîne les littéraux sont de type
string
peut s'écrire sous deux formes, cité et@
-cité.
Une bonne référence pour Heredoc équivalents, disponible dans différents langages de programmation sont à Rosettacode Wiki