Heredoc strings in C#

后端 未结 3 1194
再見小時候
再見小時候 2021-01-17 09:38

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

相关标签:
3条回答
  • 2021-01-17 09:45

    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
    0 讨论(0)
  • 2021-01-17 09:55

    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.

    0 讨论(0)
  • 2021-01-17 10:12

    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/

    0 讨论(0)
提交回复
热议问题