C#でのchar型の仕様・使い方について詳しく解説

C#プログラミングにおいて、char型は文字を扱うためのデータ型です。

そこで本記事では、char型の仕様や使い方をサンプルコードを交えながら解説していきます。

目次

char型とは

char型は、C#のデータ型の一つで、文字を表現するために使用されます。

char型は、16ビットの符号なし整数として定義されており、Unicode文字セットの1文字を表現することができます。

また、char型は、シングルクォーテーション(')で囲まれた1文字をリテラルとして表現します。例えば、’A’や’あ’などです。 以下にサンプルコードを示します。

char c1 = 'A';
char c2 = 'あ';

このように、char型変数にはシングルクォーテーションで囲まれた1文字が代入されます。

C#では日本語などのマルチバイト文字も1文字として認識されるため、文字数計算が行いやすくなっています。

char型の初期化方法

char型の変数を初期化する方法について説明します。 char型の変数を初期化するには、以下のように記述します。

char myChar = 'A';

上記の例では、myCharという名前のchar型の変数を宣言し、'A'という文字で初期化しています。シングルクォーテーションで囲まれた1文字がchar型として扱われます。

また、以下のようにUnicodeコードポイントを指定することもできます。

char myChar = '\u0041';

上記の例では、myCharという名前のchar型の変数を宣言し、Unicodeコードポイントが0041(16進数)である’A’という文字で初期化しています。

バックスラッシュuから始まる4桁または8桁の16進数表現がUnicodeコードポイントです。 なお、char型はnull許容型ではないため、null値で初期化することはできません。

char型の比較

C#では、char型同士を比較演算子==!=を使用して、2つのchar型を比較することができます。

例えば、以下のようなコードを考えてみましょう。

char c1 = 'A';
char c2 = 'B';
if (c1 == c2)
{
    Console.WriteLine("c1とc2は同じ文字です。");
}
else
{
    Console.WriteLine("c1とc2は異なる文字です。");
}

この場合、出力結果はc1とc2は異なる文字です。となります。

これは、変数c1に格納された文字'A'と変数c2に格納された文字’B’が異なるためです。 また、char型同士の大小関係も比較することができます。以下のようなコードを考えてみましょう。

char c1 = 'A';
char c2 = 'B';
if (c1 < c2)
{
    Console.WriteLine("c1はc2よりも前の文字です。");
}
else if (c1 > c2)
{
    Console.WriteLine("c1はc2よりも後ろの文字です。");
}
else
{
    Console.WriteLine("c1とc2は同じ文字です。");
}

この場合、出力結果は「c1はc2よりも前の文字です。」となります。

これは、変数c1に格納された文字'A'が変数c2に格納された文字'B'よりも前のアルファベットであるためです。

このような文字列の大小比較はソートプログラムを作成するときなどに役立ちます。

char型の変換

char型は文字を表すデータ型ですが、中身は文字コードであるため整数型との相互変換が可能です。

char型からint型への変換

char型の値をint型に変換する場合、単純にキャスト演算子を使用します。

char c = 'A';
int i = (int)c;
Console.WriteLine(i); // 出力結果:65

上記の例では、char型の'A'をint型にキャストしています。

ASCIIコード表において'A'は65番目に位置しているため、出力結果も65となります。

int型からchar型への変換

int型からchar型への変換も同様にキャスト演算子を使用します。ただし、範囲外の値を指定した場合はオーバーフローやアンダーフローを引き起こすため注意が必要です。

int i = 65;
char c = (char)i;
Console.WriteLine(c); // 出力結果:A

上記の例では、int型の65をchar型にキャストしています。ASCIIコード表において65番目に位置する文字は'A'であるため、出力結果も’A’となります。

char型の文字列

char型は、1文字だけを扱うことができるデータ型です。しかし、複数の文字を扱いたい場合には、char型の配列を使用する必要があります。

例えば、以下のようにchar型の配列を宣言して初期化することで、文字列を扱うことができます。

char[] myString = {'H', 'e', 'l', 'l', 'o'};

このように宣言されたmyString変数は、”Hello”という文字列を表します。

また、string型でも同様に文字列を扱うことができます。

string myString = "Hello";

C#で文字列を扱う場合、string型のほうが汎用性が優れているため、文字列を扱う場合はchar型配列ではなくstring型を使用するのが一般的です。

char型の注意点

C#では、char型はUnicodeエンコーディングを使用しています。

Unicodeエンコーディングは世界中の言語や記号を表現するための規格であり、1つの文字に対して16ビット(2バイト)を使用します。

そのため、char型は2バイト分のメモリ領域を必要とします。

1バイトだけ扱いたい場合はbyte型を使用してください。

C言語など一部の言語ではchar型は1バイトですが、C#では2バイト必要なので注意しましょう。

目次