C#中的Heredoc字符串

时间:2010-08-21 18:43:36

标签: c# string heredoc

在C#中是否有字符串的heredoc表示法,最好是我不必转义任何(包括双引号,这是逐字字符串中的怪癖)?

4 个答案:

答案 0 :(得分:57)

正如其他人所说,没有。

我个人首先会避免创建它们 - 我会使用嵌入式资源。它们非常容易使用,如果你有一个实用工具方法从调用程序集中加载一个命名的嵌入式资源作为字符串(可能假设是UTF-8编码),则意味着:

  • 如果您的嵌入式文档类似于SQL,XSLT,HTML等,您将获得语法突出显示,因为它确实 是一个SQL(等)文件
  • 您无需担心任何转义
  • 您无需担心缩进文档或使C#代码看起来很丑陋
  • 如果相关(例如将其视为HTML页面),您可以以“正常”方式使用该文件。
  • 您的数据与代码分开

答案 1 :(得分:40)

即使它不支持HEREDOC,你仍然可以使用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);

来自: http://blog.luckyus.net/2009/02/03/heredoc-in-c-sharp/

答案 2 :(得分:9)

不,C#中没有“HEREDOC”样式字符串文字。

C#只有两种类型的字符串文字:

  • 常规文字,需要许多转义序列
  • 逐字文字,@ - 引用:doublequotes需要通过加倍来转义

参考

答案 3 :(得分:0)

有关{strong> Heredoc 的等效参考书,提供了不同的编程语言,网址为Rosettacode Wiki