C# の文字列型 (string)
C# の string は String オブジェクト
C# の string 型は String クラスのオブジェクトとして作成されます。
Unicode (UTF-16) で文字を表す Char 型の値のシーケンスを表しています。
string 型の変数はプリミティブではなく、String オブジェクトの参照です。 String オブジェクトがセットされていなければ null になります。
C# の文字列は二重引用符で囲む
C# の文字列リテラルは二重引用符 " で囲みます。
string s = "Hello! world!";
Console.WriteLine(s);
文字列の中に改行文字などの特殊文字が含まれる場合は、エスケープします。これは char 型の場合と同様です。
エスケープシーケンスの一覧については「C# 文字のエスケープシーケンス」を参照してください。
C# の逐語的文字列リテラルではエスケープが不要
標準的な文字列では、バックスラッシュ \ 等がエスケープが必要な文字です。
このため、文字列でファイルのパスを記述しようとすると、次のようにエスケープのためのバックスラッシュが必要となり煩雑になります。
string fname = "C:\\path\\to\\file.txt";
Console.WriteLine(fname);
// C:\path\to\file.txt
C# では標準的な文字列の他に逐語的文字列 (verbatim string) がサポートされています。 逐語的文字列とするには、文字列を表す二重引用符の前に @ を付けます。
逐語的文字列を使うと、上と同じ意味のコードは次のようになります。
string fname = @"C:\path\to\file.txt";
Console.WriteLine(fname);
// C:\path\to\file.txt
ただし、二重引用符をデータとして使う場合には、文字列の終端と区別するために "" のように、重ねて書くことで一つの二重引用符と認識されます。
string fname = @"A""B";
Console.WriteLine(fname); // A"B
C# の文字列補間
フォーマット文字列に直接、変数値を埋め込むことで一つの文字列を作ることができます。
これは文字列補間と呼ばれます。文字列補間は文字列の先頭に $ を付け、 変数値を {} で囲むことで記述します。
文字列補間について詳しくは「C# の文字列補間」をご覧ください。