C#における文字列リテラルの @ シンボル(バックグラウンド文字列リテラル)とダブルクォーテーションについて紹介します。
C#文字列での@の意味について
@ シンボルを使用することでバックグラウンド文字列リテラルを作成できます。この特殊な形式の文字列リテラルには以下の特徴があります。
①エスケープシーケンスの無効化
通常の文字列リテラルではエスケープシーケンスを使用して特殊文字を表現します(例えば、改行を表す \n、タブを表す \t )@ シンボルが付いたバックグラウンド文字列リテラルではバックスラッシュ(\)がエスケープ文字として解釈されずそのままの形で表示されます。
②複数行の文字列の直接表現
バックグラウンド文字列リテラルは複数行の文字列を直接表現することもできます。改行文字やインデントなどをそのまま含めることができます。
以下に、バックグラウンド文字列リテラルの例を示します:
string normalString = "Hello\nWorld!"; // 通常の文字列リテラル(改行文字を含む)
string verbatimString = @"Hello
World!"; // バックグラウンド文字列リテラル(改行文字を含む)
normalString の場合、\n は改行文字を表しますが、verbatimString の場合改行文字そのものが含まれています。
バックグラウンド文字列リテラルは主に以下のようなケースで便利です。
- ファイルパスや正規表現パターンなど、バックスラッシュを多く含む文字列を扱う場合。
- 複数行の文字列を直接表現する場合。
ただし、一般的な文字列を扱う場合や特殊文字をエスケープする必要がある場合は通常の文字列リテラルを使用する方が適しています。
@とダブルクォーテーションの組み合わせによる文字列
string normalString = "Hello, World!"; // 通常の文字列リテラル
string verbatimString = @"Hello, World!"; // バックグラウンド文字列リテラル
string path = @"C:\Users\Username\Documents"; // バックグラウンド文字列リテラル(パス表現)
string pattern = @"\d{3}-\d{4}"; // バックグラウンド文字列リテラル(正規表現パターン)
normalString と verbatimString の値は同じですが、verbatimString では特殊文字やエスケープシーケンスを意識せずにそのまま文字列を表現することができます。またpath のようなパスや pattern のような正規表現パターンを表現する際には、バックグラウンド文字列リテラルが便利です。