Heredoc strings in C#

夙愿已清 提交于 2019-12-01 13:40:26

问题


Is there a heredoc notation for strings in C#, preferably one where I don't have to escape anything (including double quotes, which are a quirk in verbatim strings)?


回答1:


As others have said, there isn't.

Personally I would avoid creating them in the first place though - I would use an embedded resource instead. They're pretty easy to work with, and if you have a utility method to load a named embedded resource from the calling assembly as a string (probably assuming UTF-8 encoding) it means that:

  • If your embedded document is something like SQL, XSLT, HTML etc you'll get syntax highlighting because it really will be a SQL (etc) file
  • You don't need to worry about any escaping
  • You don't need to worry about either indenting your document or making your C# code look ugly
  • You can use the file in a "normal" way if that's relevant (e.g. view it as an HTML page)
  • Your data is separated from your code



回答2:


Well even though it doesn't support HEREDOC's, you can still do stuff like the following using Verbatim strings:

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

Snagged from: http://blog.luckyus.net/2009/02/03/heredoc-in-c-sharp/




回答3:


No, there is no "HEREDOC" style string literal in C#.

C# has only two types of string literals:

  • Regular literal, with many escape sequences necessary
  • Verbatim literal, @-quoted: doublequotes need to be escaped by doubling

References

  • csharpindepth.com - General Articles - Strings
  • MSDN - C# Programmer's Reference - Strings

    String literals are of type string and can be written in two forms, quoted and @-quoted.




回答4:


A good reference for Heredoc equivalents, available in different programming languages are at Rosettacode Wiki



来源:https://stackoverflow.com/questions/3538484/heredoc-strings-in-c-sharp

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!