お知らせ
2020年5月15日
[C#]逐語的文字列…?
string test = @“あい\nうえ”
この「 @ 」がついた文字列はなに…?
こちらはC#で使用することが出来る、逐語的文字列というものらしいです。
逐語とは、「解釈・翻訳などで、原文の一語一語に忠実に合わせて行くこと。」ということ。
つまり文字列の最初に@を使用することで、文字列の原文をそのまま忠実に使用することができる。
特殊文字を通常の文字として解釈するようになります。
「あい\nうえ」の「\n」は、改行コードではなく「\n」という文字だと解釈されます。
また、以下のように改行した文字列は、改行を含む文字列だと認識されます。
string test = @”あい
うえ”
ただし、ダブルクォーテーションを文字列として扱うには「“”あいうえお“”」と連続で記述する必要があります。
例1
string path = "E:\ユーザー\AppData\Local"; Console.WriteLine(path);
上記だとビルドエラーになるので以下のように記述
string path = @"E:\ユーザー\AppData\Local"; Console.WriteLine(path);
E:\ユーザー\AppData\Local
例2
上記のコードを逐語的文字列を使ってコンソールに表示してみる。
string code = "string path = @\"E:\\ユーザー\\AppData\\Local\";\nConsole.WriteLine(path); "; Console.WriteLine(code);
string path = @”E:\ユーザー\AppData\Local”;
Console.WriteLine(path);
上記は逐語的文字列を使わずエスケープシーケンスを使用。以下は逐語的文字列を使用して表示させる。
string code = @"string path = @""E:\ユーザー\AppData\Local"" Console.WriteLine(path); "; Console.WriteLine(code);
string path = @”E:\ユーザー\AppData\Local”;
Console.WriteLine(path);
ダブルクォーテーションに気をつければシンプルに記述できていいですね。ただ、改行も含めるとコードの見栄えが悪くなってしまうのが気になります。
特殊文字を文字列にしたい時や、エスケープシーケンスを使いたくない場合に便利そうです。