47

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

4

3 回答 3

57

正如其他人所说,没有。

不过,就我个人而言,我会避免一开始就创建它们——我会改用嵌入式资源。它们很容易使用,如果您有一个实用方法可以从调用程序集中将命名的嵌入式资源作为字符串加载(可能假设为 UTF-8 编码),则意味着:

  • 如果您的嵌入式文档是 SQL、XSLT、HTML 等,您将获得语法高亮显示,因为它确实一个 SQL(等)文件
  • 您无需担心任何转义
  • 您无需担心缩进文档或使 C# 代码看起来难看
  • 如果相关,您可以以“正常”方式使用该文件(例如,将其视为 HTML 页面)
  • 您的数据与您的代码是分开的
于 2010-08-21T19:05:20.223 回答
45

好吧,即使它不支持 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/

于 2011-09-16T14:14:57.843 回答
13

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

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

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

参考

于 2010-08-21T18:52:57.927 回答