C# の文字型 (char)
C# の文字型
C# の文字型変数は char 型として作成します。char 型は 2 バイトのデータ型であり、 Unicode の基本多言語面 (BMP) の文字一文字分を変数一つで表せます。
文字データは ' で囲み表記します。文字を直接書く代わりに、Unicode (UTF-16) の符号で値をセットすることもできます。
符号で文字を表す場合は \u または \x でエスケープして 16 進数の値で書きます。 例えば A という文字の Unicode の符号 (コードポイント) は U+0041 ですが、この場合 '\u0041' という文字で A になります。
char c1 = 'A';
char c2 = '\u0041';
Console.WriteLine($"{c1}, {c2}"); // A, A
対応する .NET 型は System.Char です。次の方法で、.NET 型の名前やサイズを確認できます。
char ch = 'A';
int size = sizeof(char);
Console.WriteLine($"{ch}"); // A
Console.WriteLine($"{ch.GetType().FullName}"); // System.Char
Console.WriteLine($"{size}"); // 2
C# 文字のエスケープシーケンス
次の文字を表すにはバックスラッシュを付けてエスケープして記述します。
エスケープシーケンス | 意味 |
---|---|
\' | 引用符 |
\" | 二重引用符 |
\\ | バックスラッシュ |
\0 | NULL |
\a | アラート |
\b | バックスペース |
\f | 書式送り |
\n | 改行 |
\r | キャリッジリターン |
\t | 水平タブ文字 |
\v | 垂直タブ文字 |
\xXXXX または \uXXXX | 16進数の文字コード |
C# の char 型は int 型にキャスト可能
char 型の値は int 型に直接キャストできて、数値として認識されます。
このため、次のように文字コードを確認することもできます。
char ch = 'A';
int m = ch;
Console.WriteLine($"{m:X4}"); // 0041
また、次のコードのように文字コードをインクリメントすることで、A から Z まで順番に出力することなどができます。
for (char ch = 'A'; ch <= 'Z'; ch++)
{
Console.Write($"{ch}");
// ABCDEFGHIJKLMNOPQRSTUVWXYZ
}
char 型 2 個で 1 文字となる場合
UTF-16 では SMP (補助多言語面) にある文字は、サロゲートペアを構成する 4 バイトで符号化することになっています。
UTF-16 等の説明については当サイト内の Java 入門の記事 「Java の文字型 (char)」をご覧ください。 Java の記事ですが Unicode の説明については C# でも同様です。
char[] a = new char[2];
a[0] = '\xD83E';
a[1] = '\xDD23';
string s = new string(a);
Console.WriteLine($"{s}");
実行結果は次の Emoji が表示されます。
また逆に Emoji をセットして、その長さなどを表示すると次のようになります。
実行結果は次の通り一文字セットしただけでも、文字列長は 2 となっています。
2
D83E DD23
また char の値を出力すると、確かにハイサロゲート、ローサロゲートの値が確認できます。
以上、C# の char 型について説明しました。