C#の「@」の使い方を詳しく解説
Verbatim文字列リテラルとは?
C#では、文字列の前に「@」を付けることで、Verbatim(逐語的)文字列リテラルを作成できます。通常の文字列リテラルとは異なり、エスケープシーケンスを使用せずに、そのままの文字を表現できます。
例えば、Windowsのファイルパスを通常の文字列で書くと以下のようになります:
string path = "C:\\Users\\User\\Documents\\file.txt";
しかし、Verbatim文字列を使えば、エスケープせずにそのまま書くことができます:
string path = @"C:\Users\User\Documents\file.txt";
エスケープシーケンスの違い
Verbatim文字列を使うことで、エスケープシーケンスを無視できますが、一部の記号(例えば、二重引用符 “)については特別な扱いが必要です。
通常の文字列リテラルでは:
string text = "これは\"エスケープ\"を含む文字列です。";
Verbatim文字列リテラルでは、二重引用符を二回続けて書くことでエスケープします:
string text = @"これは""エスケープ""を含む文字列です。";
識別子の前に付ける「@」
「@」は、予約語と同じ名前の識別子を作成する際にも使用できます。通常、C#の予約語(例えば、class
、int
、namespace
など)は変数名やメソッド名に使えませんが、先頭に「@」を付けることで使用可能になります。
例えば:
int @class = 10;
Console.WriteLine(@class);
これは、変数名として「class」を使用するための手法です。ただし、実際にはこの方法を使うのは避けたほうがよいでしょう。
実践的な使用例
以下に、Verbatim文字列の実践的な使用例を示します。
1. ファイルパスの扱い
string configPath = @"C:\Program Files\MyApp\config.xml";
Console.WriteLine(configPath);
2. SQLクエリの記述
SQLクエリをそのまま記述する際に便利です。
string sql = @"SELECT * FROM Users WHERE Name = 'John Doe'";
3. JSONやXMLの記述
JSONやXMLをコード内に直接書くときにも役立ちます。
string json = @"{
""name"": ""John Doe"",
""age"": 30
}";
4. 正規表現の扱い
正規表現を使う場合も「@」を付けると可読性が向上します。
string pattern = @"\d{4}-\d{2}-\d{2}"; // YYYY-MM-DD形式
以上のように、「@」はC#において文字列の表記を簡潔にし、特定の識別子を使用可能にする重要な機能です。適切に活用して、可読性の高いコードを書きましょう!