Unityな日々(Unity Geek)

Unityで可視化アプリを開発するための試行錯誤の覚書

標準リテラルと逐語リテラル

リテラル」とは「文字通り」という意味。プログラミングにおける「リテラル」は、値や文字をそのまま書き下したものを指す。

リテラル文字列には、「標準リテラル」と「逐語リテラル」の2種類があり、特殊文字の記述方法が異なる。(2.4.4.5 リテラル文字列 (C#)

標準リテラル

文字列をダブルクオーテーションで囲んで記述。

string h = "Hello World"。

特殊文字は、「\(円マーク)+文字」で表す。

たとえば、\“はダブルクオーテーション、\\は円マーク、\tはタブなど。

string e = "Joe said \"Hello\" to me";      // Joe said "Hello" to me
string g = "\\\\server\\share\\file.txt";   // \\server\share\file.txt

逐語リテラル

文字列を、@“(アットマーク)+”(ダブルクオーテーション)文字列"(ダブルクオーテーション)で囲む。すなわち、標準リテラルの前に、@をつけた形。

string h = @"Hello World"。

逐語リテラルでは特殊文字もそのまま記述できる。

string h = @"\\server\share\file.txt";      // \\server\share\file.txt

例外は"(ダブルクオーテーション)で、、"“とダブルクオーテーション2つで、ひとつのダブルクオーテーションをあらわす。

string f = @"Joe said ""Hello"" to me";   // Joe said "Hello" to me

サンプル

画像データパスが変数imageFilePathで与えられているとき、{“url”:“画像データパス”} というJSONデータを記述する:

string data1 = "{\"url\":\"" + imageFilePath + "\"}";    // 標準リテラル形式で記述した場合
string data2 = @"{""url"":""" + imageFilePath + @"""}";    //  逐語リテラル形式で記述した場合