web-dev-qa-db-ja.com

C#のヒアドキュメント文字列

C#の文字列のヒアドキュメント表記はありますか?できればエスケープする必要がないものがありますanything(逐語的な文字列の癖である二重引用符を含む)?

45
Aillyn

他の人が言っているように、ありません。

個人的には、そもそもそれらを作成することは避けますが、代わりに埋め込みリソースを使用します。これらは非常に簡単に操作でき、呼び出し元のアセンブリから名前付きの埋め込みリソースを文字列としてロードするユーティリティメソッドがある場合(おそらくUTF-8エンコーディングを想定)、次のことを意味します。

  • 埋め込まれたドキュメントがSQL、XSLT、HTMLなどのようなものである場合、実際にはbe SQL(etc)ファイルになるため、構文が強調表示されます。
  • あなたは心配する必要はありませんanyエスケープ
  • ドキュメントをインデントしたり、C#コードを醜く見せたりすることを心配する必要はありません。
  • 関連する場合は、「通常の」方法でファイルを使用できます(たとえば、HTMLページとして表示する)
  • あなたのデータはあなたのコードから分離されています
58
Jon Skeet

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/

43
Brad Parks

いいえ、C#には「HEREDOC」スタイルの文字列リテラルはありません。

C#には、次の2種類の文字列リテラルしかありません。

  • Regularリテラル、多くのエスケープシーケンスが必要
  • Verbatimリテラル、@-引用符:二重引用符は2倍にすることでエスケープする必要があります

参考文献

11

さまざまなプログラミング言語で利用可能なHeredocの同等物の適切なリファレンスは、 Rosettacode Wiki にあります。

1
PM12