【C#】ヒアドキュメント(逐語的文字列リテラル:@””)の使い方
ヒアドキュメントとは、\や”などの特殊文字をエスケープシーケンスを必要とせず、改行を含むことができる文字列の記述法です。C#においては、文字列でヒアドキュメントができますが、「逐語的文字列リテラル」「ヒアストリング」「@-quoted string」と呼ばれています。
ファイルパスでよく使われます。\がファイルパスに使われているからです。
記述法
文字列リテラルの前に@をつけるだけです。
通常の文字列では、\を表示するためにはエスケープシーケンスの\をつける必要があります。
string filepath = "C:\\hoge\\hogehoge"
先頭に@をつけると、この書き方で宣言できます。
string filepath = @"C:\hoge\hogehoge"
改行を含んだ文字列は
string mail = "○○様\n○○です\nお世話になっております。"
を
string mail = "○○様 ○○です お世話になっております。"
と書けます。 改行に関しての注意点は、インデントのための空白も文字列に含まれてしまう点です。ですので、空白を取り除くメソッドを作ってそれに読ませるか、改行後の文字列を左詰めで書いてください。
改行を文字列に含むことができるのは、SQL文に役立ちます。SQL文を文字列で宣言するとき、
string sql="SELECT * FROM hogeTABLE"; sql+= "WHERE hoge =A AND hogehoge=B"; sql+="ORDER BY ASC;";
のように+=で文字列をつなげていたり、
string sql=new StringBuilder(); sql.Append("SELECT "); sql.Append(" * "); sql.Append( "FROM "); sql.Append(" hogeTABLE"); sql.Append("WHERE ") ; sql.Append("hoge =A AND hogehoge=B"); sql.Append("ORDER BY ASC;");
のようにAppendでつなげたりしますが、
string sql=@"SELECT * FROM hogeTABLE WHERE hoge =A AND hogehoge=B ORDER BY ASC;"
のように1行で書くことができます。
まとめ
文字列リテラルの前に@をつけると\や”などの特殊文字をエスケープシーケンスを必要とせず、改行を含むことができる文字列になる。ファイルパスやSQL文で便利。