string (C# リファレンス)
string 型は、Unicode 文字のシーケンスを表します。文字数がゼロの場合もあります。string は、.NET Framework の String のエイリアスです。
string は参照型ですが、等値演算子 (== および !=) は、string オブジェクトの参照ではなく、値を比較するように定義されます。値を比較することで、文字列が等しいかを直感的にテストできます。次に例を示します。
string a = "hello";
string b = "h";
// Append to contents of 'b'
b += "ello";
Console.WriteLine(a == b);
Console.WriteLine((object)a == (object)b);
文字列の内容が等しいので、"True"、"False" の順に表示されますが、a
および b
は同じ文字列インスタンスを参照しません。
+ 演算子は、文字列を連結します。
string a = "good " + "morning";
これは、"good morning" を含む文字列オブジェクトを作成します。
文字列は変更不可です。文字列オブジェクトの作成後、そのコンテンツを変更することはできません。構文では変更可能に見えても、変更不可です。たとえば、このコードを作成すると、コンパイラは新しい文字列を格納する新しいシーケンス オブジェクトを生成し、変数 b には引き続き "h" が格納されます。
string b = "h";
b += "ello";
[] 演算子は、string の各文字へのアクセスに使用できます。
string str = "test";
char x = str[2]; // x = 's';
リテラル文字列は string 型であり、二重引用符で囲む形式と、@ と二重引用符で囲む形式の 2 とおりがあります。二重引用符で囲む場合は、リテラル文字列の前後に二重引用符 (") を付けます。
"good morning" // a string literal
リテラル文字列には、エスケープ シーケンスを含む任意の文字リテラルを含めることができます。
string a = "\\\u0066\n";
この文字列には、円記号 (\)、文字 f、および改行文字が含まれています。
メモ : |
---|
エスケープ コード |
@ と二重引用符で囲む場合は、先頭に @ を付け、さらに、リテラル文字列の前後に二重引用符を付けます。次に例を示します。
@"good morning" // a string literal
@ と二重引用符を使用した場合の利点は、エスケープ シーケンスが処理されないため、たとえば、完全修飾ファイル名が書きやすくなることです。**
@"c:\Docs\Source\a.txt" // rather than "c:\\Docs\\Source\\a.txt"
@ と二重引用符で囲まれた文字列中に二重引用符を含めるには、二重引用符を二重にします。
@"""Ahoy!"" cried the captain." // "Ahoy!" cried the captain.
また、参照 (/reference (メタデータのインポート)) 識別子が C# キーワードである場合も、@ 記号を使用します。
使用例
// keyword_string.cs
using System;
class TestClass
{
static void Main()
{
string a = "\u0068ello ";
string b = "world";
Console.WriteLine( a + b );
Console.WriteLine( a + b == "hello world" );
}
}
出力
hello world True
C# 言語仕様
詳細については、「C# 言語仕様」の次のセクションを参照してください。
2.4.2 識別子
2.4.4.5 リテラル文字列
4.2.3 string 型
7.9.7 文字列等値演算子
参照
関連項目
C# のキーワード
参照型 (C# リファレンス)
値型 (C# リファレンス)